如何使用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 相关文章推荐
动态创建类实例代码
Oct 07 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
python的mysqldb安装步骤详解
Aug 14 Python
TensorFlow如何实现反向传播
Feb 06 Python
python机器学习之贝叶斯分类
Mar 26 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 Python
Python如何给函数库增加日志功能
Aug 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来处理多个提交任务
2006/10/09 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
php权重计算方法代码分享
2014/01/09 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
php检测文本的编码
2015/07/26 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
2021/03/09 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
详解Python当中的字符串和编码
2015/04/25 Python
python中set常用操作汇总
2016/06/30 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
Python如何访问字符串中的值
2020/02/09 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
目标责任书范文
2014/04/14 职场文书
pytorch 中nn.Dropout的使用说明
2021/05/20 Python
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers