我创建了一个自定义模板标记,用于使用模板上指定的 html 属性呈现我的表单元素。我想要做的就是将字典传递给我的标签,如下所示:
{{ form.openid_identifier|htmlattributes:{'class' : 'something', 'id': 'openid_identifier'} }}
有没有办法在模板上写这样的东西?
最佳答案
首先,您提供的是自定义过滤器的语法,而不是自定义标签。假设您打算说自定义过滤器,我将回答这个问题。
其次,您不能将字典显式传递给过滤器(或模板标签,就此而言)。大括号、方括号和圆括号不允许作为 {% %}
中的字符并且在解析模板时会导致语法错误。
但是,没有什么可以阻止您,例如,传入一个看起来像字典的字符串,然后在模板标签中解析它:
{{ form.openid_identifier|htmlattributes:"{'class' : 'something', 'id': 'openid_identifier'}" }}
在这种情况下,您的自定义过滤器需要将其正确解析为字典。
了解您为什么使用您正在使用的解决方案可能会有所帮助。我通常会从表单类中(通常在
forms.py
中)为 Form 对象设置类。或者,如果您想对相关标签进行更精确的控制,请继续并拼写出来:<input type="text" name="openid_identifier" id="openid_identifier" class="something" />
关于Django - 如何将字典传递给模板标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952587/