如何使用Django Admin管理后台导入CSV


Posted in Python onNovember 06, 2020

假设你需要允许在Hero管理页面上导入CSV数据。为此,您需要添加一个指向更改Hero列表页面的链接,点击这个链接会跳转到上传页面。你需要编写一个处理POST请求的方法,来从CSV文件中获取数据对象:

class CsvImportForm(forms.Form):
  csv_file = forms.FileField()
@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
  ...
  change_list_template = "entities/heroes_changelist.html"
  def get_urls(self):
    urls = super().get_urls()
    my_urls = [
      ...
      path('import-csv/', self.import_csv),
    ]
    return my_urls + urls
  def import_csv(self, request):
    if request.method == "POST":
      csv_file = request.FILES["csv_file"]
      reader = csv.reader(csv_file)
      # Create Hero objects from passed in data
      # ...
      self.message_user(request, "Your csv file has been imported")
      return redirect("..")
    form = CsvImportForm()
    payload = {"form": form}
    return render(
      request, "admin/csv_form.html", payload
    )

然后创建模板文件entities/heroes_changelist.html,以覆盖原有的admin/change_list.html:

{% extends 'admin/change_list.html' %}
{% block object-tools %}
  <a href="import-csv/" rel="external nofollow" >Import CSV</a>
  <br />
  {{ block.super }}
{% endblock %}

最后,创建上传页面csv_form.html:

{% extends 'admin/base.html' %}
{% block content %}
  <div>
    <form action="." method="POST" enctype="multipart/form-data">
      {{ form.as_p }}
      {% csrf_token %}
        <button type="submit">Upload CSV</button>
    </form>
  </div>
  <br />
{% endblock %}

修改完后,会在更改Hero后台列表页面上会有一个Import CSV的链接.

如何使用Django Admin管理后台导入CSV

点击后上传页面显示如下。

如何使用Django Admin管理后台导入CSV

以上就是如何使用Django Admin管理后台导入CSV的详细内容,更多关于Django Admin导入CSV的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
简单介绍Python的轻便web框架Bottle
Apr 08 Python
Python中编写ORM框架的入门指引
Apr 29 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
Python PIL图片添加字体的例子
Aug 22 Python
安装python及pycharm的教程图解
Oct 10 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
python 8种必备的gui库
Aug 27 Python
pycharm-professional-2020.1下载与激活的教程
Sep 21 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 #Python
python两种获取剪贴板内容的方法
Nov 06 #Python
用python写一个带有gui界面的密码生成器
Nov 06 #Python
python如何编写类似nmap的扫描工具
Nov 06 #Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 #Python
基于Python模拟浏览器发送http请求
Nov 06 #Python
python如何写个俄罗斯方块
Nov 06 #Python
You might like
PHP 批量删除数据的方法分析
2009/10/30 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
zend framework重定向方法小结
2016/05/28 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
JS面向对象编程 for Cookie
2010/09/19 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
如何在django中运行scrapy框架
2020/04/22 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
协议书怎么写
2014/04/21 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
小学毕业感言200字
2015/07/30 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android
基于Python实现流星雨效果的绘制
2022/03/18 Python