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

时间:2018-03-16 12:17:42

标签: django image django-templates render

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

  

工作形象:/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'),
    )

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

不要像@ {1}}那样自己构建网址,让Django为你做这个工作:

media/{{event.image}}

这样,Django将使用您设置中的 <img src="{{ event.image.url }}" class="img-responsive" /> 创建正确的URL。请注意,您的网络服务器配置必须与MEDIA_URL

上的MEDIA_ROOT提供的图像相匹配