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

Mat*_*odd 10 django django-templates

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

定义的类和功能:

class Bar():

    def foo(self, value):
       # do something here
       return True
Run Code Online (Sandbox Code Playgroud)

在模板中:

{% if my_bar.foo:my_value %}Yes{% endif %}
Run Code Online (Sandbox Code Playgroud)

目前我收到一个TemplateSyntaxError"无法解析剩余部分"

rze*_*erg 10

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

from django import template

register = template.Library()
Run Code Online (Sandbox Code Playgroud)

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

@register.filter(name='foo')
Run Code Online (Sandbox Code Playgroud)

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

@stringfilter
def foo(value):
    value = #do something with value
    return value #return value
Run Code Online (Sandbox Code Playgroud)

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

app/
    models.py
    templatetags/
        __init__.py
        foo_functions.py
    views.py
Run Code Online (Sandbox Code Playgroud)

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

{% load foo_functions %}
Run Code Online (Sandbox Code Playgroud)

然后你像这样使用foo:

{% if my_value|foo %}Yes{% endif %}
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多相关信息:

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