如何使用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网络编程示例(客户端与服务端)
Apr 24 Python
详解python之配置日志的几种方式
May 22 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
python 重定向获取真实url的方法
May 11 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
Django实现分页显示效果
Oct 31 Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 Python
如何使用python socket模块实现简单的文件下载
Sep 04 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文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
php生成curl命令行的方法
2015/12/14 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
详解Python中namedtuple的使用
2020/04/27 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
应届毕业生求职信
2013/11/30 职场文书
幼儿园保育员辞职信
2014/01/12 职场文书
个人近期表现材料
2014/02/11 职场文书
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技