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

Posted

技术标签:

【中文标题】django 将参数传递给模板标签中的函数【英文标题】:django pass parameter to function in template tag 【发布时间】:2011-08-18 22:14:58 【问题描述】:

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

定义的类和函数:

class Bar():

    def foo(self, value):
       # do something here
       return True

在模板中:

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

目前我收到 TemplateSyntaxError "Could not parse the rest"

【问题讨论】:

【参考方案1】:

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

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 %

您可以在Django documentation for creating custom template tags 上阅读更多相关信息。

【讨论】:

以上是关于django 将参数传递给模板标签中的函数的主要内容,如果未能解决你的问题,请参考以下文章

将命名参数传递给 Django 模板中的函数

在 django 模板 URL 标签中传递参数

Django将多个参数传递给If语句中的自定义模板过滤器

是否可以将查询参数传递给 Django % url % 模板标签?

是否可以将关键字参数传递给 Django % url % 模板标签?关键字参数值应该来自 html 标签

为什么我们将请求作为参数传递给django的render方法?