sza*_*man 3 django httpresponse django-views
在视图中,我使用以下命令创建新文件:
sys.stdout = open(backup_name, 'w')
call_command('dumpdata')
Run Code Online (Sandbox Code Playgroud)
现在如何将该文件返回给用户?
我试图将HttpResponse中的mimetype更改为“ application / json”,但如何添加文件内容以进行响应?
或者,也许还有其他方法可以返回文件?
。
我知道有些晚了,但是我发现这是一个有用的起点,因此我认为其他人也可以从我发现的内容中受益。
对于小文件,如果将json文件放在模板文件夹中,则django可以找到它,并且可以使用以下命令将其返回render_to_response:
return render_to_response(data_file,mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)
我发现这对于某些浏览器上的大型数据集是有问题的。我会得到错误的An existing connection was forcibly closed by the remote host。一种替代方法可以解决此问题。
首先,您必须创建文件的完整路径。使用PROJECT_ROOT变量(PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))在settings.py中定义)。要访问此方法和os方法,您必须import settings, os在views.py中。一旦有了此文件位置,就可以使用以下代码将其返回:
backup_path = os.path.join(settings.PROJECT_ROOT, "templates", "json_dumps", "large_file.json")
return HttpResponse(open(backup_path, 'r'),content_type = 'application/json; charset=utf8')
Run Code Online (Sandbox Code Playgroud)
我发现即使是非常大的文件,它也能很好地工作。
| 归档时间: |
|
| 查看次数: |
4337 次 |
| 最近记录: |