在Django Flatpages中无法使用{{MEDIA_URL}}?

时间:2013-07-17 00:39:54

标签: python html django django-templates django-flatpages

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

我尝试使用对{{ MEDIA_URL }}的简单调用,以便在About Us Django平面上显示图像,但似乎平面忽略了它是一个Django变量并且仅仅采用{{1作为文本?

我提供了{{MEDIA_URL}},但是当呈现模板时,它不会将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">字样。

我错过了一个导入还是什么?管理平面页面的default.html扩展了我的常用模板,因此我认为没有理由为什么会失败,除非我不明白平板页面可以访问哪些内容?

1 个答案:

答案 0 :(得分:3)

您可以通过templatetag访问平面页面中的MEDIA_URLLook at this snippet 它会搜索{{ 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的文件中,然后将过滤器添加到您的flatpages模板中