如何使用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发送伪造的arp请求
Jan 09 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
Python采用Django开发自己的博客系统
Sep 29 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
Jul 19 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
python用plt画图时,cmp设置方法
Dec 13 Python
Python求均值,方差,标准差的实例
Jun 29 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
python实现文件的分割与合并
Aug 29 Python
python 命名规范知识点汇总
Feb 14 Python
Python按照list dict key进行排序过程解析
Apr 04 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 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
main.php
2006/12/09 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
微信小程序仿美团城市选择
2018/06/06 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
解析Python中的二进制位运算符
2015/05/13 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
银行求职信个人范文
2013/12/16 职场文书
教师实习自我鉴定
2013/12/18 职场文书
大学生入党思想汇报
2014/01/01 职场文书
节约粮食标语
2014/06/18 职场文书
先进典型发言材料
2014/12/30 职场文书
借条格式范本
2015/05/25 职场文书
Python机器学习之决策树和随机森林
2021/07/15 Javascript
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB