2009-09-26 41 views

回答

10

创建一个新的模板标签可能是相当复杂的,具体取决于它的作用,以及它是否是块标签(带有开始和结束 - 如{% if %} {% endif %}等)。基本上,您需要创建一个example.templatetags模块(其中example是您的应用程序),在您的模板中实现您的标记,然后{% load example %},以便他们可以“看到”您的模板标记和过滤器。

例如,如果您想要创建一个{% foobarbaz %}标签,该标签在使用时会输出“foor”或“bar”或“baz”(以arg的形式给出时)或“”(当给出其他内容时)一个模板,你example/templatetags.py力量看起来是这样的:

from django import template 
register = template.Library() 

@register.simple_tag 
def foobarbaz(input): 
    if "foo" == input: 
     return "foo" 
    if "bar" == input: 
     return "bar" 
    if "baz" == input: 
     return "baz" 
    return "" 

在你的模板,你可以做这样的事情(记住,上述模块是example应用程序的一部分):

{% load example %} 
{% foobarbaz "bar" %} 
{% foobarbaz "elephant" %} 
{% foobarbaz "foo" %} 

哪会输出:

bar 

foo 

需要注意的是,因为我使用simple_tag,我只有基本的控制参数的分析,有没有办法做一个结束标记等

更多信息,请参见documentation on custom template filters and tags