是否可以在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
Django有一个专门用于返回文件的类,FileResponse。它将文件流化,这样在返回之前就不必将整个文件读入内存。给你:
如果您有非常大的文件或者经常这样做,一个更好的选择可能是使用正常的服务器配置在Django之外提供这些文件。
如果您使用的是Windows机器,那么pdf必须以
rb
而不是r
的形式打开。简单地说,如果您有一个PDF文件,并且希望通过Django视图输出它,那么您只需要将文件内容转储到响应中,并用适当的mimetype发送它。
您可能只需直接返回响应,而不必指定内容处置,但这更好地表明了您的意图,还允许您指定文件名,以防用户决定保存它。
另外,请注意,上面的视图不处理由于任何原因无法打开或读取文件的情况。因为它是用
with
完成的,所以不会引发任何异常,但是您仍然必须返回某种响应。不过,你可以简单地提出一个Http404
或其他东西。相关问题 更多 >
编程相关推荐