Django模板 - 来自media_root的图片在主页中呈现,但不是其他页面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django模板 - 来自media_root的图片在主页中呈现,但不是其他页面相关的知识,希望对你有一定的参考价值。
我有一个在我的主页上呈现的图像,但它不在使用相同代码的不同页面上。我想问题可能是我的网址路径可能不同?这是我能找到的唯一区别。当我检查每个元素时,这就是我所看到的:
工作形象:/event/image.png
破碎的图像:/event/media/image.png
我在我的模板中渲染这样的图像:
<img src="media/{{event.image}}" class="img-responsive" />
我的模型只是一个模型。图像字段,这里是我对破碎图像页面的视图:
def event(request, product_id):
event = get_object_or_404(Event, id=product_id)
image = event.image
context = {'event':event, 'image':image}
template = 'tourney.html'
return render(request, template, context)
在我的终端,它说没有找到图像。那么如何更改我的设置,以便无论我在哪条路径,它都会在正确的目录中查找?这是我的媒体设置:
if DEBUG:
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static', 'static-only')
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static', 'media')
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), 'static', 'static'),
)
答案
你需要一个领先的斜杠:“/ media / ...”。
但是,更好的方法是使用内置属性,为您提供包含MEDIA_URL的完整URL:
<img src="{{ event.image.url }}" class="img-responsive">
另一答案
不要像media/{{event.image}}
那样自己构建网址,让Django为你做这个工作:
<img src="{{ event.image.url }}" class="img-responsive" />
这样,Django将使用您设置中的MEDIA_URL
创建正确的URL。请注意,您的Web服务器配置必须与MEDIA_ROOT
上的MEDIA_URL
相匹配并提供图像
以上是关于Django模板 - 来自media_root的图片在主页中呈现,但不是其他页面的主要内容,如果未能解决你的问题,请参考以下文章
在 django settings.py 中更新 media_root 时遇到问题
在 Django 开发期间提供静态媒体:为啥不 MEDIA_ROOT?