加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 11:11:34 所属栏目:Python 来源:网络整理
导读:我正在尝试编写一个带有任意数量参数的 django包含标记: @register.inclusion_tag('so.html')def table_field(*args):fields = []for arg in args: fields.append(arg)return { 'fields': fields,} 但是,当我从django的模板引擎调用它时: {% table_field f
我正在尝试编写一个带有任意数量参数的 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#是针对该函数进行检查的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读