从媒体文件夹Django打开PDF文件

从媒体文件夹Django打开PDF文件,django,pdf,Django,Pdf,我正在尝试创建一个链接,当单击该链接时,将从我的媒体文件夹tbh_wt_1.PDF中打开一个PDF文件 我试过: 但我收到一个“未找到页面错误” 我还尝试过下载PDF,其中包含以下代码: fd = open(os.path.join(settings.MEDIA_ROOT, 'workouts/tbh_wt_1.pdf')) response = HttpResponse(fd, content_type='application/pdf') response['Content-Disposit

我正在尝试创建一个链接,当单击该链接时,将从我的媒体文件夹tbh_wt_1.PDF中打开一个PDF文件

我试过:
但我收到一个“未找到页面错误”

我还尝试过下载PDF,其中包含以下代码:

fd = open(os.path.join(settings.MEDIA_ROOT, 'workouts/tbh_wt_1.pdf'))
response = HttpResponse(fd, content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename=tbh_wt_1.pdf'
return response
设置.py

MEDIA_ROOT = os.path.join(ROOT_DIR,'media/')

MEDIA_URL = '/media/'
但我得到错误“Adobe无法打开文件,因为它不受支持”


我感谢您的反馈和专业知识。

您无需编写任何查看代码即可为媒体目录中的文件提供服务。您只需在settings.py中设置变量MEDIA_URL和MEDIA_ROOT:

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/var/www/example.com/media/"
MEDIA_ROOT = os.path.join(ROOT_DIR,'media')

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = '/media/'
我假设这个问题发生在开发环境中,而不是在生产服务器中。您应该将这些行添加到URL.py中,以便开发服务器在media/目录下提供这些文件

from django.conf import settings

urlpatterns += patterns('',
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
)
来自django.conf导入设置的

urlpatterns+=模式(“”,
(r“^media/(?P.*)”、“django.views.static.service”、{“document\u root”:settings.media\u root}),
)
仅应出于开发目的将其添加到URL.py中。对于生产,您应该使用内置的web服务器选项,如Apache或Nginx


媒体根目录用于引用应提供服务的目录。媒体URL用于引用模板中的URL路径。

您是否在settings.py中设置了媒体URL和媒体根目录设置?对于第一个设置,您是否确定该文件存在于该目录中,并且媒体URL上有服务?第二,你似乎忘记了打开文件,你只是在传递HttpResponse的路径。我知道该文件存在,因为我可以将该文件附加到电子邮件中。我已经从settings.py中包含了我的媒体根目录和媒体URL。我还包括了“open”,但我仍然得到了adobe错误。(不确定我是否在正确的位置打开)。我感谢你的帮助。