2

一个相当简单的问题,如果需要,我将详细说明以解决问题。

我试图使用一个简单的调用来{{ MEDIA_URL }}在 About Us Django 平面页面上显示图像,但该平面页面似乎忽略了它是一个 Django 变量并且只是将{{MEDIA_URL}}其作为文本的事实?

我提供了:<img src="{{ MEDIA_URL }}images/static/Deb-and-Diana-About-Us.jpg" alt="Deb &amp; Diana Portrait" width="300" height="384" align="left">但是当模板被渲染时,它不会将 MEDIA_URL 附加到它应该在的地方,它只是留下了 words {{ MEDIA_URL }}

我错过了进口还是什么?管理平面页面的 default.html 扩展了我常用的模板,所以我看不出为什么这会失败,除非我不明白平面页面可以访问什么?

4

1 回答 1

6

您可以MEDIA_URL通过模板标签访问平面页面。查看此代码段 它会搜索{{ MEDIA_URL }}并将其替换为您的设置中找到的代码段。

from django import template
from django.conf import settings
from django.template.defaultfilters import stringfilter

register = template.Library()

@register.filter
@stringfilter
def media_url(value):
    """Searches for {{ MEDIA_URL }} and replaces it with the MEDIA_URL from settings.py"""
    return value.replace('{{ MEDIA_URL }}', settings.MEDIA_URL)
media_url.is_safe = True

以及用法:

{% load media_url %}
{{ flatpage.content|media_url }}

要进行设置,请将上述代码放入media_url.py您的templatetags目录中的一个名为的文件中INSTALLED_APPS,然后将过滤器添加到您的平面页面模板中,如下所示

于 2013-07-17T01:43:29.057 回答