有没有简单的方法来做到以下几点?
在视图中获取请求后,向用户发送一个文件,以及页面的重新呈现模板?类似于"合并"与文件和render_to_response的响应
这是我如何使用文件返回响应:
filename = "/path/to/somewhere"
wrapper = FileWrapper(open(filename))
content_type = mimetypes.guess_type(filename)[0]
response = HttpResponse(wrapper,content_type=content_type)
response['Content-Length'] = os.path.getsize(filename)
response['Content-Disposition'] = "attachment; filename=%s"%filename
return response
Run Code Online (Sandbox Code Playgroud)
这是我返回带有渲染数据的普通模板的方法:
data = getData()
return render_to_response('../templates/some_template.html', {'data': data,})
Run Code Online (Sandbox Code Playgroud)
(我可能已经删除了一些重要的复制粘贴行,但为了说明我的观点 - 这段代码有效,问题不在于这两个代码示例)
问题是:我如何将它们"合并"在一起?使用django标准功能有一个简单的方法吗?我必须使用Ajax吗?(我不熟悉ajax ......所以如果没有办法可以做到这一点,那就更好了)
谢谢,
如果您简化了超文本传输协议的视图,则用户与您的应用程序交互的方式是发送应用程序为您的应用程序提供响应的请求.在RFC 6266的4.2节中,当您返回与"附件"处置类型匹配的响应时,您指示用户的客户端应该"提示用户在本地保存响应,而不是正常处理".
不支持提供包含HTML和其他一些内容类型的响应,并且可以指示客户端保存一个并显示另一个.它不受支持的事实并不意味着您不应该探索提供此类用户体验的替代方案,但它应该暗示我们没有实践它并且用户不会期望它.
但是,除了事实之外,如果你真的想要这样做,你需要明白服务文件和显示一个新的HTML文档将需要两个单独的请求/响应上下文.最简单的设计将包括用户将从其发起检索文件请求的页面,还订阅应用程序以在用户完成检索文件时通知,然后关闭以显示一些新内容或重定向到新页面.
| 归档时间: |
|
| 查看次数: |
5438 次 |
| 最近记录: |