2016-12-03 133 views
2

在我的應用程序隊/ templatetags/teams_extras.py我有這樣的過濾器Django過濾器。 is_safe不起作用

from django import template 

register = template.Library() 

@register.filter(is_safe=True) 
def quote(text): 
    return "« {} »".format(text) 

所以我用它爲我的觀點隊/模板/團隊/ show.html

{% extends './base.html' %} 
{% load static %} 
{% load teams_extras %} 
... 
<b>Bio :</b> {{ team.biography|quote }} 
... 

但是,這是我的網頁上的結果:

&laquo; <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> &raquo; 

爲什麼? 謝謝

+0

嘗試這個'返回'«{}»「.format(text)' –

+0

我有這個:««

邁阿密熱火隊是一支美國職業籃球隊,總部設在邁阿密。熱火在美國國家籃球協會參加東部聯盟東南聯盟成員

»' – Alexandre

+0

您可以使用過濾器安全[doc](https://docs.djangoproject.com/en/1.10/ref/templates/ builtins /#safe) –

回答

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("&laquo; {} &raquo;".format(text)) 

和:

{{ team.biography|quote }} 

這應該工作。

+0

這是工作!謝謝 ;) – Alexandre