使用 Django,我想让一些数据可供下载。
到目前为止,我的 jQuery 调用看起来像这样:
$.getJSON("/get_data",
{ users: users, study: "{{study.id}}" } ,
function(json){
alert('some data!');
}
);
这会调用我的一个 Django 视图,它会生成一些 JSON 并尝试将该 JSON 文本放入文件中以供下载
jsonResponse = json.dumps(data, cls=DjangoJSONEncoder)
jsonFile = cStringIO.StringIO()
jsonFile.write(jsonResponse)
response = HttpResponse(jsonFile, mimetype='application/json')
response['Content-Disposition'] = 'attachment; filename=data.txt'
return response
但是,这不起作用。看了一会儿,我相信我应该在两端更改一些东西——Javascript 和 python/Django 代码——但我不清楚具体是什么。
对于 Python,我主要关心的是cStringIO的使用(尤其是在返回之前我无法在 jsonFile 上执行 close 而不会提示“ValueError: I/O operation on closed file”)。
也许我也应该使用 FileWrapper(就像在这篇文章中一样),但无论有没有它,我都会得到相同的结果。
对于 Javascript,我不确定我的成功处理程序函数应该包含什么。
任何指针将不胜感激!