如何使用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 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
python的Tqdm模块的使用
Jan 10 Python
python批量修改文件编码格式的方法
May 31 Python
python excel转换csv代码实例
Aug 26 Python
python实现从wind导入数据
Dec 03 Python
python爬虫实现获取下一页代码
Mar 13 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
Python list去重且保持原顺序不变的方法
Apr 03 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 Python
Python正则表达式中flags参数的实例详解
Apr 01 Python
python前后端自定义分页器
Apr 13 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日历制作代码分享
2014/01/20 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
js获取当前select 元素值的代码
2010/04/19 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
js 函数的副作用分析
2011/08/23 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
开始着手第一个Django项目
2015/07/15 Python
详解Python Socket网络编程
2016/01/05 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
python 调用钉钉机器人的方法
2019/02/20 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
python调用webservice接口的实现
2019/07/12 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python3运算符常见用法分析
2020/02/14 Python
python实现学生管理系统开发
2020/07/24 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
领导党性分析材料
2014/02/15 职场文书
秋天的雨教学反思
2014/04/27 职场文书
安全生产宣传标语
2014/06/06 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
个人求职自荐信范文
2015/03/06 职场文书
目标责任书格式范文
2015/05/11 职场文书
收入证明申请书
2015/06/12 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL