在我的应用 teams / templatetags / teams_extras.py 我有这个过滤器
from django import template
register = template.Library()
@register.filter(is_safe=True)
def quote(text):
return "« {} »".format(text)
所以我将它用于我的视图 teams / templates / teams / show.html
{% extends './base.html' %}
{% load static %}
{% load teams_extras %}
...
<b>Bio :</b> {{ team.biography|quote }}
...
但这是我页面上的结果:
« <p>The Miami Heat are an American professional basketball team based in Miami. The Heat compete in the National Basketball Association as a member of the league's Eastern Conference Southeast Division</p> »
为什么? 谢谢
答案 0 :(得分:4)
文档says:
这个标志告诉Django如果一个“安全”字符串被传递到你的过滤器中,结果仍然是“安全的”,如果传入一个非安全字符串,Django会在必要时自动转义它。
因此,请尝试将安全值传递给过滤器:
{{ team.biography|safe|quote }}
或用户mark_safe:
from django.utils.safestring import mark_safe
@register.filter()
def quote(text):
return mark_safe("« {} »".format(text))
和
{{ team.biography|quote }}
这应该有效。