Django将ajax响应传递给php变量

2024-10-01 07:15:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用ajax向django函数发送请求,然后django函数生成一个zip文件并将其提供给用户。如果我转到url domain.com/django/builder/zipit/,文件会按预期生成并下载到我的计算机上,但是当使用ajax并返回响应时,ajax无法下载它。我可以将响应传递给一个php变量并以这种方式下载它吗?使用iframe是不起作用的,因为文件是动态创建的。在

阿贾克斯

$.ajax({
    type: 'POST',
    url: '/django/builder/zipit/',
    data: serialize,
    success: function(response){
        //pass response to php somehow
    }

在视图.py在

^{pr2}$

Tags: 文件django函数用户comurlresponsedomain
1条回答
网友
1楼 · 发布于 2024-10-01 07:15:38

你不需要把它传递给PHP变数。一切在django本身是可能的。在

mimetype设置为application/x-zip-compressed

但是请注意,在每个请求上创建zip归档文件是个坏主意,这可能会杀死服务器(如果归档文件很大,则不计算超时)。性能明智的方法是将生成的输出缓存到文件系统中的某个位置,并仅在源文件发生更改时才重新生成它。更好的办法是提前准备归档文件(例如通过cron作业),并让您的web服务器像平常一样为它们提供静态服务。在

# archive_list = ["ZipTest1.txt", "ZipTest2.txt", "ZipTest3.txt"]
# # save the files in the archive_list into a PKZIP format .zip file
# zfilename = "Wife101.zip"
# zout = zipfile.ZipFile(zfilename, "w")
# for fname in archive_list:
# zout.write(fname)
# zout.close()
return HttpResponse(zout,mimetupe="application/x-zip-compressed")

相关问题 更多 >