介绍
在Django管理管理后台中如何实现导入CSV ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
假设你需要允许在英雄管理页面上导入CSV数据。为此,您需要添加一个指向更改英雄列表页面的链接,点击这个链接会跳转到上传页面。你需要编写一个处理后请求的方法,来从CSV文件中获取数据对象:
类CsvImportForm (forms.Form): csv_file=forms.FileField () @admin.register(英雄) 类HeroAdmin (admin。ModelAdmin ExportCsvMixin): … change_list_template=笆堤?heroes_changelist.html" def get_urls(自我): url=super () .get_urls () my_urls=[ … 路径(& # 39;import-csv/& # 39;, self.import_csv), ] 返回my_urls +网址 def import_csv(自我,要求): 如果请求。方法==癙OST": csv_file=request.FILES (“csv_file") 读者=csv.reader (csv_file) #创建英雄对象从传入的数据 #…… 自我。message_user(请求时,“你的csv文件已经imported") 返回重定向(“…“) 形式=CsvImportForm () 有效载荷={}“form":形式 返回渲染( 请求、“admin/csv_form.html"负载 )
然后创建模板文件实体/heroes_changelist.html,以覆盖原有的admin/change_list。html:
{% & # 39;延伸管理/change_list.html& # 39;%} {%块对象工具%} & lt; a href=https://www.yisu.com/zixun/眎mport-csv/眗el="外部nofollow”>导入CSV >
{{块。超级}} {% endblock %}
最后,创建上传页面csv_form。html:
{% & # 39;延伸管理/base.html& # 39;%} {%块内容%} & lt; div> action=& lt;形式“!”方法=癙OST"enctype=岸嗖糠?form-data"比; {{形式。as_p}} {% csrf_token %} & lt;按钮类型=皊ubmit"祝辞上传CSV & lt;/form> & lt;/div> & lt; br/比; {% endblock %}
修改完后,会在更改英雄后台列表页面上会有一个导入CSV的链接。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。