如何使用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中字符串前面加r的作用
Jun 04 Python
Python编程之string相关操作实例详解
Jul 22 Python
Python Socket使用实例
Dec 18 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
Python reques接口测试框架实现代码
Jul 28 Python
Python入门之基础语法详解
May 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 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
YII实现分页的方法
2014/07/09 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
解析Python的缩进规则的使用
2019/01/16 Python
详解python中@的用法
2019/03/27 Python
Python函数式编程实例详解
2020/01/17 Python
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
高中考试作弊检讨书
2014/01/14 职场文书
《假如》教学反思
2014/04/17 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
师范生见习报告范文
2014/11/03 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技