Django模板 - 来自media_root的图片在主页中呈现,但不是其他页面

问题描述 投票:0回答:2

我有一个在我的主页上呈现的图像,但它不在使用相同代码的不同页面上。我想问题可能是我的网址路径可能不同?这是我能找到的唯一区别。当我检查每个元素时,这就是我所看到的:

工作形象:/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'),
    )
django image django-templates render
2个回答
1
投票

你需要一个领先的斜杠:“/ media / ...”。

但是,更好的方法是使用内置属性,为您提供包含MEDIA_URL的完整URL:

<img src="{{ event.image.url }}" class="img-responsive">

1
投票

不要像media/{{event.image}}那样自己构建网址,让Django为你做这个工作:

    <img src="{{ event.image.url }}" class="img-responsive" />

这样,Django将使用您设置中的MEDIA_URL创建正确的URL。请注意,您的Web服务器配置必须与MEDIA_ROOT上的MEDIA_URL相匹配并提供图像

© www.soinside.com 2019 - 2024. All rights reserved.