不能在 Django Flatpages 中使用 {{MEDIA_URL}}?



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

我试图使用一个简单的调用{{ MEDIA_URL }}以便在关于我们 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附加到应有的位置,它只是将单词{{ MEDIA_URL }} .

我是否缺少导入或其他内容? 管理平面页面的默认值.html扩展了我通常的模板,因此我认为没有理由失败,除非我不了解平面页面可以访问哪些内容?

您可以通过模板标记访问平面页面中的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 }}

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

最新更新