我想在我的頁面元描述中將&
更改爲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