如何使用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中处理字符串之isdecimal()方法的使用
May 20 Python
Python检测网站链接是否已存在
Apr 07 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
Python网络爬虫与信息提取(实例讲解)
Aug 29 Python
python中requests和https使用简单示例
Jan 18 Python
儿童python练习实例
May 27 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
在Tensorflow中查看权重的实现
Jan 24 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
Python数据分析入门之数据读取与存储
May 13 Python
pandas中关于apply+lambda的应用
Feb 28 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加密解密的代码
2007/07/16 PHP
php缓冲输出实例分析
2015/01/05 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
php递归函数怎么用才有效
2018/02/24 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
vue cli 全面解析
2018/02/28 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
python-str,list,set间的转换实例
2018/06/27 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
Python无损压缩图片的示例代码
2020/08/06 Python
开办饭店创业计划书
2013/12/28 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
工程承包协议书
2014/10/20 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL