Django自定义模板标记传递可变数量的参数
我正在尝试编写django自定义模板标记,该标记将在模板中调用,如下所示: 模板:Django自定义模板标记传递可变数量的参数,django,django-templates,Django,Django Templates,我正在尝试编写django自定义模板标记,该标记将在模板中调用,如下所示: 模板: {% load tag_name %} {% tag_fn arg1 arg2 ... arg n %} arg1、…、argn是python变量 模板标签: {% load tag_name %} {% tag_fn arg1 arg2 ... arg n %} 在模板标签中,我有四个双核 d1={“key1”:“some text”+str(arg2),“key2”:“some text”+str(arg
{% load tag_name %}
{% tag_fn arg1 arg2 ... arg n %}
arg1、…、argn
是python变量
模板标签:
{% load tag_name %}
{% tag_fn arg1 arg2 ... arg n %}
在模板标签中,我有四个双核
d1={“key1”:“some text”+str(arg2),“key2”:“some text”+str(argm)
like wise我有四本字典
根据arg1
的值,应该呈现相应的字典,并且我希望模板标记将“一些文本值(arg1)一些文本值(argm)”
返回到模板
请建议一种实现方法。通过使用Python内置的从列表中传入多个值的方式,可以将任意数量的变量传递给自定义模板标记。示例:
from django import template
register = template.Library()
@register.tag('my_tag')
def do_whatever(parser, token):
bits = token.contents.split()
"""
Pass all of the arguments defined in the template tag except the first one,
which will be the name of the template tag itself.
Example: {% do_whatever arg1 arg2 arg3 %}
*bits[1:] would be: [arg1, arg2, arg3]
"""
return MyTemplateNode(*bits[1:])
class MyTemplateNode(template.Node):
def __init__(self, *args, **kwargs):
do_something()
def render(self, context):
do_something_else()
希望这对您有所帮助。实现这一点的最简单方法是使用Python的常规方法来接受可变数量的参数:
@register.simple_标记()
def my_标签(*args):
#使用args执行操作,args是所有参数的列表
返回“要输出的内容”
然后,您可以随心所欲地使用它:
{% my_tag arg1 arg2 arg3 %}
Django文档实际上在这个主题上相当全面。