python – django包含标记中的任意位置参数数量?

我正在尝试编写一个带有任意数量参数的
django包含标记:

@register.inclusion_tag('so.html')
def table_field(*args):
fields = []
for arg in args:
    fields.append(arg)
return { 'fields': fields, }

但是,当我从django的模板引擎调用它时:

{% table_field form.hr form.bp form.o2_sat %}

我收到错误:

table_field takes 0 arguments

这是django模板引擎的另一个限制吗?

最佳答案 从1.2.1开始,您可以将参数传递给包含标记.

这是我的mod到django投票模板标签的一个例子

@register.inclusion_tag("voting/vote_form.html", takes_context=True)
def vote_form(context, vote_object, vote_dict, score_dict):
    if isinstance(vote_dict, dict):

模板看起来像:

{% vote_form bookmark vote_dict score_dict %}

我不喜欢这个是没有办法命名参数,只是把它们整理好,但确实有效.

我现在不太清楚的是,为什么在指定take_context时,父上下文不会与您返回的上下文一起传递以用于呈现包含模板.

您尝试使用* args将无法正常工作,因为传递的args#是针对该函数进行检查的.

点赞