我使用Django 1.6.5。
我设法使用以下代码在我的Google Chrome中查看pdf:
def generate_pdf(request):
...
with open("students.pdf", 'r') as pdf:
response = HttpResponse(pdf.read(), 'application/pdf')
return response
但是我注意到视图被调用了两次并不酷,因为我在这个视图中有pdf生成代码。
[31/May/2014 00:35:07] "GET /students/pdf/ HTTP/1.1" 200 18040
[31/May/2014 00:35:08] "GET /students/pdf/ HTTP/1.1" 200 18040
当我将HttpResponse更改为如下所示:
response = HttpResponse(pdf.read())
然后它会在记事本中打开pdf。 pdf显然不会渲染,但视图只运行一次。
为什么只将'application / pdf'添加到我的HttpResponse会导致视图运行两次? :(
答案 0 :(得分:3)
之前,我仅在Google Chrome上对此进行了测试。在Firefox上测试时一切正常。对我来说更奇怪的是,在我朋友的笔记本电脑上,一切都工作得很好(通过精细工作,我的意思是只运行一次)。然后我有了这个想法 - 也许一些chrome扩展导致了这个? anwer 是。 我的谷歌浏览器的AdBlocks导致django视图运行两次。