繁体   English   中英

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

[英]Can't use {{MEDIA_URL}} in Django Flatpages?

为了解决该问题,我将在需要时阐述一个相当简单的问题。

我尝试使用一个简单的调用{{ MEDIA_URL }}来在About About Django {{ MEDIA_URL }}上显示图像,但是该平板似乎忽略了它是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 }}

我缺少进口商品吗? 控制平面的default.html扩展了我通常的模板,因此我看不出为什么它会失败,除非我不明白哪些平面可以访问?

您可以通过templatetag在平面页面中访问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.pytemplatetags目录在你的一个INSTALLED_APPS ,过滤器添加到您的flatpages模板,像这样

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM