如何在Django的另一个视图中使用视图中的报表?

时间:2011-11-15 21:14:32

标签: python django

我有一个上传文件的表单,然后我生成一个报告。问题是,我还想将报告作为存档提供下载。我想以某种方式在报告中包含CSS和JS(我从我的布局继承),但我真的不知道如何去做。 到目前为止,我没有在服务器端存储文件(生成报告),我在完成后删除它。

到目前为止,我能想到的唯一解决方案是:从我的存档生成视图中,使用urllib发布到生成报告的表单,保存响应,然后只重写样式表/ JS文件的链接。

有更简单的方法吗?只要客户端的会话存在,有没有办法在服务器端保留一些文件?

2 个答案:

答案 0 :(得分:1)

在您使用的视图中使用HttpResponse显示生成的报告,而不是使用urllib发布。如果您有某些内容

def report_view(request):
   ...
   return render_to_response(request,....)

然后使用响应对象创建存档

def report_view(request):
   ...
   archive_link = "/some/nice/url/to/the/archive"
   response = render_to_response(request, ... { "archive-link" : archive_link})
   store_archive(response)
   return response

def store_archive(response):
     # here you will need to find css/js files etc
     # and bundle them in whatever type of archive you like
     # then temporarily store that archive so it can be accessed by the archive_link
     # you previously used in your view to allow for downloading

def report_archive_view(request):
     # serve the temporarily stored archive, then delete it if you like

您可以找到有关HttpResponse in the Django docs的所有信息。

虽然这可能对你有用,但我怀疑你真正想要的是什么,也许你真正想要的是generate a pdf report using ReportLab

答案 1 :(得分:0)

您可以随时保留文件,并拥有一个删除会话已过期文件的cron作业