如何使用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 while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
python去除字符串中的换行符
Oct 11 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
celery4+django2定时任务的实现代码
Dec 23 Python
python制作填词游戏步骤详解
May 05 Python
python批量将excel内容进行翻译写入功能
Oct 10 Python
python两个_多个字典合并相加的实例代码
Dec 26 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
python链表类中获取元素实例方法
Feb 23 Python
python 实现图片特效处理
Apr 03 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP文件系统管理(实例讲解)
2017/09/19 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
react redux入门示例
2018/04/19 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
Python格式化日期时间操作示例
2018/06/28 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
模具专业自荐信
2014/05/29 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
2015年科室工作总结
2015/04/10 职场文书
科技活动总结范文
2015/05/11 职场文书
检察院起诉书
2015/05/20 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
实习报告范文
2019/07/30 职场文书