2012-10-30 45 views
0

我是noob django程序員,我想爲Django模板創建自己的模板標籤。我創建了一個templatetags模塊,當我使用顯示的代碼時它似乎正常工作;但是,我的函數返回一個字符串"&lt;""&gt;"而不是"<"">"(就好像函數的結果已被修改爲addslashes()函數)。我的代碼有什麼問題?Django中自動模板標籤的縮進

base_template.html(使用我的模板標籤的Django模板)

<% load templatetags %> 
<html> 
<head> 
</head> 
<body> 
    {# text contains a string #} 
    {{ text | formattedtext }} 
</body> 
</html> 

templatetags.py

from django import template 

register = template.Library() 
@register.filter(name='formattedtext') 

def formattedtext(value): 
    try: 
     scoringTemplate = "<b>" + value + "</b>" 
     print scoringTemplate #return string with "<b>text</b>" 
     return scoringTemplate #however, this returns string with "&lt;text&gt;" value :(
    except ValueError: 
     return value 
    except: 
     return value 

回答

2

您需要標記輸出作爲 '安全': https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.safestring.mark_safe

所以,你的代碼應該變成:

from django import template 
from django.utils.safestring import mark_safe 

register = template.Library() 
@register.filter(name='formattedtext') 

def formattedtext(value): 
    try: 
     scoringTemplate = "<b>" + value + "</b>" 
     print scoringTemplate #return string with "<b>text</b>" 
     return mark_safe(scoringTemplate) # unescaped, raw html 
    except ValueError: 
     return value 
    except: 
     return value 
+0

好的,這對我很有用!謝謝!! :) – fcortes