当HttpResponse时,视图会运行两次,如果是'application / pdf'类型

时间:2014-05-30 22:40:30

标签: django

我使用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会导致视图运行两次? :(

1 个答案:

答案 0 :(得分:3)

之前,我仅在Google Chrome上对此进行了测试。在Firefox上测试时一切正常。对我来说更奇怪的是,在我朋友的笔记本电脑上,一切都工作得很好(通过精细工作,我的意思是只运行一次)。然后我有了这个想法 - 也许一些chrome扩展导致了这个? anwer 我的谷歌浏览器的AdBlocks导致django视图运行两次。