媒体文件在Django中失败

0 投票
1 回答
643 浏览
提问于 2025-04-28 07:35

我遇到了一个关于媒体文件的常见问题。我有一个模型,它可以把图片保存在媒体文件夹里:

class Article(models.Model):
    titre = models.CharField(max_length=100)
    auteur = models.CharField(max_length=42)
    contenu = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date")
    photo = models.ImageField(upload_to="blog/media/upload/photos/", default="default.jpg")

但是在我的模板中,当我试图通过这种方式获取我的图片时:

<img class="photo" src="{{ media_url }} {{ article.photo }}">

结果是 {{ media_url }} 是空的!

在我的 settings.py 文件中,我尝试了不同的配置(在这个网站上找到的),现在的配置是:

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
#MEDIA_URL = 'http://localhost:8000/blog/media/'
#MEDIA_ROOT = '/blog/media/'
MEDIA_ROOT = '/home/remi/perso/django/projets/SiteBlog/blog/media/'

ROOT_PATH = os.path.dirname(__file__)

STATICFILES_DIRS = (
    os.path.join(ROOT_PATH, 'static'),
)

这个配置对静态文件有效,但对媒体文件完全不行。

我还尝试在 urls.py 中添加这个:

#    urlpatterns += patterns('',
#    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
#    'document_root' : settings.MEDIA_ROOT}))

但是这样我遇到了“语法错误”。

抱歉发帖讨论这样一个常见问题,但我找不到适合我的解决方案!

谢谢!

Rémi.

暂无标签

1 个回答

0

首先在你的模板中,把 {{ media_url }} 改成 {{ MEDIA_URL }}

<img class="photo" src="{{ MEDIA_URL }} {{ article.photo }}">

然后把 urls.py 改成这样:

if settings.DEBUG:
    # static files (images, css, javascript, etc.)
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.MEDIA_ROOT}))

撰写回答