如何在Django视图中显示PDF文件?

发布于 2021-02-02 22:36:53

是否可以在 Django视图中显示PDF文件,而不是使用户必须下载它才能看到它?

如果有可能,将如何做?

这是我到目前为止所拥有的

@login_required
def resume(request, applicant_id):

    #Get the applicant's resume
    resume = File.objects.get(applicant=applicant_id)
    fsock = open(resume.location, 'r')
    response = HttpResponse(fsock, mimetype='application/pdf')

    return response
关注者
0
被浏览
141
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    简而言之,如果你有一个PDF文件,并且想通过Django视图输出它,那么你要做的就是将文件内容转储到响应中并以适当的mimetype发送。

    def pdf_view(request):
        with open('/path/to/my/file.pdf', 'r') as pdf:
            response = HttpResponse(pdf.read(), mimetype='application/pdf')
            response['Content-Disposition'] = 'inline;filename=some_file.pdf'
            return response
        pdf.closed
    

    你可能可以直接返回响应而无需指定Content-Disposition,但这可以更好地表明你的意图,并且还可以指定文件名,以防用户决定保存它。

    另外,请注意,上面的视图无法处理由于某种原因无法打开或读取文件的情况。既然完成了with,它不会引发任何异常,但是你仍然必须返回某种响应。但是,你可以简单地提出一个Http404或类似的东西。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看