2015-09-03 41 views
0

我试着用CamelCase创建一个新页面。我在下面,他们使用自定义过滤器wikify页教程:与CamelCase建立链接

from django import template 
import re 

wikilink = re.compile("\\b([A-Z][a-z]+[A-Z][a-z]+)\\b") 
register = template.Library() 

@register.filter 
def wikify(value): 
    return wikilink.sub(r"<a href='/wikicamp/\1/'>\1</a>", value) 

在turtorial此代码应工作。我没有得到一个错误,但在我的应用程序也只能说明这一点:

<a href='/wikicamp/NewPage/'>NewPage</a>

,而不是新页的驼峰“字”。 我可以用另一种方式做,或者我做错了什么?

+0

尝试使用双引号代替单引号 –

+0

你的问题不明确。实际输出与期望输出有什么不同? –

+0

我可以在页面上编辑一些文字。这段文字说:这个链接到一个NewPage。 而不是NewPage是一个链接,它仍然是一个字符串:这个链接到一个NewPage

回答

0

您需要将输出标记为要呈现的HTML的“安全”。如果你相信,可以给予模板过滤器的任何输入,你知道这不可能是恶意的,你可以做到这一点,像这样:

from django.utils.safestring import mark_safe  

@register.filter 
def wikify(value): 
    output = wikilink.sub(r"<a href='/wikicamp/\1/'>\1</a>", value) 
    return mark_safe(output) 
+0

它没有任何区别:( –

+0

我的道歉,我有一个错误的安全标记进程 - '@ register.filter(is_safe = True)'表明过滤器不会添加可能需要转义的字符。添加HTML标签显然不是这样,相反,请参阅上面我编辑的答案以进行标记输出安全 – ryanmrubin

+0

谢谢你的人! –