Django - 如何将字典传递给模板标签

时间:2011-02-10 01:42:33

标签: django django-templates

我创建了一个自定义模板标记,用于使用模板上指定的html属性呈现我的表单元素。我想要做的就是将字典传递给我的标签,如:

{{ form.openid_identifier|htmlattributes:{'class' : 'something', 'id': 'openid_identifier'} }}

有没有办法在模板上写这样的东西?

2 个答案:

答案 0 :(得分:3)

首先,您要提供自定义过滤器的语法,而不是自定义标记。假设您要说自定义过滤器,我将回答这个问题。

其次,您无法将字典显式传递给过滤器(或者模板标记)。大括号,括号和括号不允许作为{% %}中的字符,并且在解析模板时会导致语法错误。

然而,没有什么可以阻止你,例如,传入一个看起来像字典的字符串,然后在模板标签中解析它:

{{ form.openid_identifier|htmlattributes:"{'class' : 'something', 'id': 'openid_identifier'}" }}

在这种情况下,您的自定义过滤器需要将其正确解析为字典。

了解您使用正在使用的解决方案的原因可能会有所帮助。我通常在表单类中设置Form对象的类(通常在forms.py中)。或者,如果您想要更精确地控制相关标签,请继续拼写:

<input type="text" name="openid_identifier" id="openid_identifier" class="something" />

答案 1 :(得分:0)

通过takes_context = True并从视图中传递您需要的数据。