媒体文件在Django中失败
我遇到了一个关于媒体文件的常见问题。我有一个模型,它可以把图片保存在媒体文件夹里:
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}))