一个相当简单的问题,如果需要,我将详细说明以解决问题。
我尝试使用对{{ 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 & Diana Portrait" width="300" height="384" align="left">
字样。
我错过了一个导入还是什么?管理平面页面的default.html扩展了我的常用模板,因此我认为没有理由为什么会失败,除非我不明白平板页面可以访问哪些内容?
答案 0 :(得分:3)
您可以通过templatetag访问平面页面中的MEDIA_URL
。 Look 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模板中} p>