如何使用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中list常用操作实例详解
Jun 03 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python语言描述KNN算法与Kd树
Dec 13 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
python 梯度法求解函数极值的实例
Jul 10 Python
使用python写一个自动浏览文章的脚本实例
Dec 05 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
Apr 17 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
python用tkinter实现一个简易能进行随机点名的界面
Sep 27 Python
解决python3输入的坑——input()
Dec 05 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
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面向对象的方法重载两种版本比较
2008/09/08 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
使用vue.js制作分页组件
2016/06/27 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
浅谈Python __init__.py的作用
2020/10/28 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
新闻记者实习自我鉴定
2013/09/19 职场文书
大学生四个方面的自我评价
2013/09/19 职场文书
单位人事专员介绍信
2014/01/11 职场文书
意向协议书范本
2014/04/23 职场文书
校园绿化美化方案
2014/06/08 职场文书
农村党员对照检查材料
2014/09/24 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
2015教师年度考核评语
2015/03/25 职场文书
导游词之天津盘山
2019/11/01 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
Python加密与解密模块hashlib与hmac
2022/06/05 Python
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS