2014-01-23 41 views
0

我想从这tutorial重现小维基引擎。 在本教程中,他们使用自定义过滤器wikify页:替换链接到文章内容的维基文章

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) 

维基文章是由模型deafined。 我想用文章中的wikiwords替换而不是链接,但用目标文章的前10个单词替换。如何用django过滤器做到这一点,或者有更好的方法来做到这一点?谢谢。

回答

0

您可以将一个函数传递给re.sub。用于维基文章的模式不清晰,但这里有一个例子:

def repl(m): 
    return WikiArticles.objects.get(title=m.group(1)).content[:10] 

@register.filter 
def wikify(value): 
    return wikilink.sub(repl, value) 

注:前十个字符返回不言。

+0

哇!谢谢你如此快速的回答! – microspace