django 在模板中使用 MEDIA URL

Posted

技术标签:

【中文标题】django 在模板中使用 MEDIA URL【英文标题】:django using MEDIA URL in a template 【发布时间】:2015-07-12 18:44:08 【问题描述】:

我正在尝试访问用户上传的文件。

我有以下设置:

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

MEDIA_URL = '/project/media/'

文件是:

path = models.FileField(upload_to="myApp")
image = models.ImageField(upload_to="myApp/logos", null=True, blank=True)

在模板中,我尝试通过以下方式访问它:

MEDIA_URLfile.path

但它不起作用..

我做错了什么?

【问题讨论】:

【参考方案1】:

file.path返回一个代表文件的对象,你想要的是file.path.url,它负责添加MEDIA_URL

【讨论】:

我将其更改为 file.path.url,它为我提供了文件的正确路径(相对于项目目录),但我仍然无法下载/查看文件。 . @brad 您需要使用 HTTP 服务器为 MEDIA_ROOT 提供服务,请参阅 this 以了解如何在开发中执行此操作。 @brad 是的file.path.url 不是file.url 我犯了一个错误 它仍然不起作用..我真的不明白我做错了什么..它下载文件但它的内容是当前页面的html 我需要添加以下内容: url(r'^project/media(?P.*)$', 'django.views.static.serve', 'document_root': settings.MEDIA_ROOT,),现在可以正常工作了

以上是关于django 在模板中使用 MEDIA URL的主要内容,如果未能解决你的问题,请参考以下文章

配置django上传文件目录的http访问

CSS 文件中的 Django 媒体 URL

媒体文件不提供给 Django 中的模板

django-文件上传Media url的配置

Django - MEDIA_URL 仍然与 S3BotoStorage 相关吗?

图像未出现在 django 2.1 的模板中