django将参数传递给模板标签中的函数

时间:2011-05-04 22:09:14

标签: django django-templates

是否可以将参数传递给django模板标签内的函数?

定义的类和函数:

class Bar():

    def foo(self, value):
       # do something here
       return True
模板中的

{% if my_bar.foo:my_value %}Yes{% endif %}

目前我收到一个TemplateSyntaxError“无法解析余数”

1 个答案:

答案 0 :(得分:10)

您需要使用模板过滤器在文件中导入模板库:

from django import template

register = template.Library()

然后你需要在该文件中注册模板过滤功能:

@register.filter(name='foo')

然后在该文件中创建这样的过滤器函数:

@stringfilter
def foo(value):
    value = #do something with value
    return value #return value

然后将文件放在此层次结构中的应用程序中:

app/
    models.py
    templatetags/
        __init__.py
        foo_functions.py
    views.py

然后在模板中加载你的foo_functions文件,你需要运行它:

{% load foo_functions %}

然后你像这样使用foo:

{% if my_value|foo %}Yes{% endif %}

您可以在此处详细了解:

http://docs.djangoproject.com/en/dev/howto/custom-template-tags/