Django jQuery Ajax表单:下载文件或呈现错误的表单
我希望Django创建的表单被jQuery/Ajax提交;如果成功,我希望下载一个文件,如果表格无效,我希望返回我的Django表格 我尝试过像这样“highjack”Django表单,将其转换为jQuery/Ajax: (javascript代码) 我的Django视图代码如下:Django jQuery Ajax表单:下载文件或呈现错误的表单,ajax,django,jquery,django-forms,Ajax,Django,Jquery,Django Forms,我希望Django创建的表单被jQuery/Ajax提交;如果成功,我希望下载一个文件,如果表格无效,我希望返回我的Django表格 我尝试过像这样“highjack”Django表单,将其转换为jQuery/Ajax: (javascript代码) 我的Django视图代码如下: # (if the form is invalid I return it (simple template containing only the form)) # if valid: response = Htt
# (if the form is invalid I return it (simple template containing only the form))
# if valid:
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=filename.csv'
writer = csv.writer(response, delimiter=';')
writer.writerow(['...stuff written here...'])
return response
因此,我的文件是动态创建的CSV,这可能是需要注意的重要事项
请参阅我的jQuery代码中如何使用jqXHR对象检查返回的内容类型(欢迎更好地执行此操作)。我的问题是,如果成功,我无法让jQuery理解这是一个返回的文件,应该下载。可能吗?jQuery只是将数据作为文本处理
可能的解决办法:
- 第一次调用ajax检查表单,如果可以,则调用“普通”(非ajax)下载文件
- 忘记ajax,如果表单无效,则返回一个错误页面
# (if the form is invalid I return it (simple template containing only the form))
# if valid:
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=filename.csv'
writer = csv.writer(response, delimiter=';')
writer.writerow(['...stuff written here...'])
return response