【发布时间】:2012-05-01 14:23:09
【问题描述】:
有没有简单的方法来做以下事情?
在视图中得到请求后, 向用户发回一个文件,加上重新渲染的页面模板? 类似于“合并”响应与文件和 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
这就是我返回带有渲染数据的普通模板的方式:
data = getData()
return render_to_response('../templates/some_template.html', {'data': data,})
(我可能已经通过复制粘贴删除了一些重要的行,但为了说明我的观点 - 这段代码有效,问题不在于这两个代码示例)
问题是:我如何将它们“合并”在一起? 有没有一种简单的方法可以使用 django 标准功能来做到这一点? 我必须为此使用 Ajax 吗? (我不熟悉 ajax ......所以如果没有办法做到这一点,它是可取的)
谢谢,
【问题讨论】:
-
我无法想象您希望用户在这里看到/获得什么。这将如何运作?
-
您要求的是同一响应中的两个内容?没有简单的方法可以做到这一点。您可能应该使用 Ajax。
-
Daniel - 我在页面上有一个按钮,我希望它一次完成 2 项工作 - 将文件发送回用户,并使用新数据更新页面上的“div”部分.也许我在这里的建议(一次使用 2 个请求)不是解决方案,但欢迎任何关于如何获得正确用户体验的想法
标签: python django django-views