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

标签 django django-templates

我创建了一个自定义模板标记,用于使用模板上指定的 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/

相关文章:

django - 如何禁用 django feed 中的自动转义?

python - Django 应用程序的照片管理

javascript - 当我在 Django 中运行我的服务器时,我收到此请求错误,我一直在使用 Bootstrap

python - 使用 setattr 在模型上设置查询

django - 在多个 django 模板中重用相同的 "block"html

python - 如何在模板中使用 bool 字段?

django-shop vs Satchless?

python - 以任意顺序包含 Django 模板

django - 如何检测 Django 模板中表单元素的类型?

django - 从命令行渲染 Django 模板,无需设置