我想在我的页面元描述中将&
更改为and
。替换Django模板中的字符
这是我试过
{% if '&' in dj.name %}
{{ dj.name.replace('&', 'and') }}
{% else %}
{{ dj.name }}
{% endif %}
这是行不通的。它仍然显示为&
我想在我的页面元描述中将&
更改为and
。替换Django模板中的字符
这是我试过
{% if '&' in dj.name %}
{{ dj.name.replace('&', 'and') }}
{% else %}
{{ dj.name }}
{% endif %}
这是行不通的。它仍然显示为&
dj.name.replace('&', 'and')
您无法使用参数调用方法。您需要编写自定义过滤器。
官方指南是在这里:
https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/#registering-custom-filters
好吧,这里是我的例子,比如说,在一个名为“问题”,我想写一个过滤器to_and
它取代“&”到“应用程序和'在一个字符串中。
在/ PROJECT_NAME /问题/ templatetags,创建一个空白__init__.py
和to_and.py
这是这样:
from django import template
register = template.Library()
@register.filter
def to_and(value):
return value.replace("&","and")
模板,使用说明:
{% load to_and %}
那么你就可以享受:
{{ string|to_and }}
注意,目录名称templatetags
和文件名to_and.py
不能是其他名称。从而
由于Django的有意限制了模板语言可用逻辑的处理量,这是不可能的参数传递给从模板内访问的方法调用。数据应该在视图中计算,然后传递给模板进行显示。
您必须事先编辑dj.name
。
编辑:看起来像Pythoner知道更好的方法:registering a custom filter。 upvote他;)
我想这会更好,如果你写一个示例过滤器。 – FallenAngel
@FallenAngel它来... – tcpiper
这将是更好,如果你的例子地址'&»和'替换。既然它会完全回答OP的问题。 – FallenAngel