Django Admin 实现 CSV 数据导入功能详解

山海之间
山海之间
发布时间:2026-10-14| 6人浏览过
原创

本文介绍如何在 Django Admin 中实现 CSV 数据导入功能。通过自定义 ModelAdmin 添加处理 POST 请求的方法,创建 changelist 模板以添加导入链接,并编写上传页面表单。修改后,后台列表页将显示 Import CSV 链接,点击即可上传并处理 CSV 文件数据。

Django Admin 实现 CSV 数据导入功能详解

若需在 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 的相关信息,请参阅本站其他相关文章。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。