Python 如何使已经存在的pdf文件可供django中的用户下载?

Python 如何使已经存在的pdf文件可供django中的用户下载?,python,django,pdf,Python,Django,Pdf,我将django用于一个小项目,我将使用户能够下载已经存在于media/doc/path中的pdf 所以我写了这个代码 with open('media/doc/document.pdf', 'r',encoding='latin1',errors='replace') as pdf: response = FileResponse(pdf.read(), content_type='application/pdf') response['Content-

我将django用于一个小项目,我将使用户能够下载已经存在于
media/doc/
path中的pdf 所以我写了这个代码

    with open('media/doc/document.pdf', 'r',encoding='latin1',errors='replace') as pdf:
        response = FileResponse(pdf.read(), content_type='application/pdf')
        response['Content-Disposition'] = 'inline;filename=some_file.pdf'
        return response
但是当pdf文件被下载时,页面显示为空,顺便说一句,我已经尝试过utf-8编码,对我不起作用,甚至对我不起作用


那么如何使页面可见呢?

您正在尝试的代码应该可以工作,但如果不工作,我建议您也可以下载带有HTML代码的pdf文件

<a class="btn btn-lg btn-primary" href="{{ obj.url }}" type="application/octet-stream .pdf" download="menu.pdf" target="_blank" role="button">Download a pdf file</a>

最近在HTML5中添加了下载属性,您现在可以直接从HTML下载文件,无需为此创建额外的视图。
你可以看到详细信息

你确定这确实指向你的文件
打开('media/doc/document.pdf
?@Lemayzeur是的,该文件已经存在并被下载了,但它给了我空页,顺便说一句,我已经测试了许多文档,但我面临相同的问题发送
HttpResponse(pdf.read(),content_type='application/pdf'))
使用application/pdf作为内容类型,并删除open()中的所有参数,如使用open('media/doc/document.pdf','rb')删除
作为pdf格式。不要用于foreget
rb
binary@Lemayzeur它对我有用谢谢你我真的很感谢你的帮助太好了!我在你的评论中看到你有一个问题:用户将下载相同的pdf文件,你现在可以使用了吗?谢谢你的帮助!!它可以工作,但我不能使用它,因为不是所有用户都会下载相同的pdf文件事实上,我在上面没有提到它是为了避免事情变得复杂,顺便说一句,@Lemayzeur的解决方案对我来说很有用