首先说下具体情况:
django 1.9
python3.5
在setting已经设置:
MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
url中设置:
[....
url(r'^media/(?P<path>.*)', serve, {"document_root": MEDIA_ROOT}), ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
models中定义:
image = models.ImageField(upload_to="blog/%Y%m",verbose_name='封面图', blank=True)
html中:
<a href="#" class="thumbnail">
<img src="{{ MEDIA_URL }}{{ article.image }}" alt="..."/> </a>
但是,前端图片就是显示不出来,而且奇怪的是,路径解析成了我的app的名字(blog)
前端显示情况:
然后就是各种google, 各种百度, 最后还是stackoverflow上看到一个,写要加下面这个:
[.... url(r'^media/(?P<path>.*)', serve, {"document_root": MEDIA_ROOT}), ]+ st
但是很明显,我已经加了,但这时我看到他贴出来的setting中的templates中:
'django.template.context_processors.media',
注: django1.9 之前是:'django.core.context_processors.media'
是的,没错,关键就在这里了,templates中加上这个,才能正确解析出来.
(ps, 好久没更新了,本地onenote写了,又不想在博客上再写一遍.)