You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django项目中实现JSON与CSV文件的用户下载功能?

在Django中实现JSON/CSV文件下载功能

不需要先将文件写入项目目录,直接在视图中生成数据并返回下载响应即可,这样更高效且避免磁盘IO操作。以下是具体实现步骤:

1. 修改views.py,添加下载视图

JSON文件下载视图

import json
from django.http import HttpResponse

def download_json(request):
    # 执行你的数据抓取与处理逻辑,生成sorted_result
    # sorted_result = 你的最终数据结果
    final = json.dumps(sorted_result, indent=2)
    
    # 构造下载响应
    response = HttpResponse(final, content_type='application/json')
    # 设置响应头,触发浏览器下载行为并指定文件名
    response['Content-Disposition'] = 'attachment; filename="webscraping_dataset.json"'
    return response

CSV文件下载视图

import pandas as pd
from io import StringIO
from django.http import HttpResponse

def download_csv(request):
    # 执行你的数据抓取与处理逻辑,生成name、price、URL列表
    # name = [...]
    # price = [...]
    # URL = [...]
    df = pd.DataFrame({"Name": name, "Price": price, "URL": URL})
    
    # 将CSV数据写入内存缓冲区,避免写入本地磁盘
    buffer = StringIO()
    df.to_csv(buffer, index=False)
    buffer.seek(0)
    
    # 构造下载响应
    response = HttpResponse(buffer.getvalue(), content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="data.csv"'
    return response

如果你的数据不需要每次下载都重新爬取,可以把处理后的结果存入Django缓存(比如django.core.cache.cache),减少重复爬取的资源消耗。

2. 配置urls.py

在项目的urls.py中添加对应的URL映射:

from django.urls import path
from . import views

urlpatterns = [
    # 保留你已有的其他URL
    path('download/json/', views.download_json, name='download_json'),
    path('download/csv/', views.download_csv, name='download_csv'),
]

3. 在模板中添加下载入口

在你的HTML模板里添加下载链接,让用户点击即可触发下载:

<a href="{% url 'download_json' %}">下载JSON数据</a>
<br>
<a href="{% url 'download_csv' %}">下载CSV数据</a>

补充:若需读取本地已生成的文件

如果必须保留本地文件的持久化存储,可以用FileResponse直接返回本地文件:

from django.http import FileResponse
import os

def download_json_from_local(request):
    file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'webscraping_dataset.json')
    return FileResponse(open(file_path, 'rb'), as_attachment=True, filename='webscraping_dataset.json')

内容的提问来源于stack exchange,提问作者afjol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:42:19