我创建了一个自定义模板标记,用于使用模板上指定的html属性呈现我的表单元素。我想要做的就是将字典传递给我的标签,如:
{{ form.openid_identifier|htmlattributes:{'class' : 'something', 'id': 'openid_identifier'} }}
有没有办法在模板上写这样的东西?
答案 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并从视图中传递您需要的数据。