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

标签 django django-forms django-templates

我正在致力于呈现表单模板。相关代码是这样的:

{% for field in filter.form %}
  {% if field.is_hidden %}
    {{ field }}
  {% else %}
    <div class="field">
        {{ field }}
    </div>
  {% endif %}
{% endfor %}

到目前为止,一切都很好。如果是隐藏字段,则只需显示该字段即可。如果没有,请使用类 field 放置一个 div 包装器从我正在使用的框架中激活一些 CSS。

但是,我需要 div 包装器中的类为 picker如果该字段是一个选择框。它需要是picker-multiple如果它是一个多选框。等等。

这可以在模板 View 中执行吗?我们正在使用一个框架(这就是为什么我不想只使用 CSS 以不同的方式定位表单字段),但我们希望核心代码能够在没有框架的情况下工作(我认为,这就是为什么我们不会不想在单独的 Python 文件中执行此类操作)。

至于我所尝试的,我注意到{{ field.field.widget }}呈现类似 <django.forms.widgets.Select object at 0x10d822a50> 的内容。我本来期望 {{ field.field.widget.Select }}渲染某些东西(我想到了True),但它什么也没做。

最佳答案

django-widget-tweaks包括为您提供的 field_type 和 widget_type 模板过滤器。

关于django - 如何检测 Django 模板中表单元素的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21557788/

相关文章:

python - 如何从 Django 模块中的给定字段中获取引用为 ForeignKey 的所有对象

django - 防止在表单集验证之前保存模型

python - Django 中的 ModelForms 与 ManyToMany 关系模型

Django:如何在 Django 表单中多次包含相同的字段?

python - Django 中的分组表单字段?

python - 如何让python不将L附加到longs或在django模板中忽略

Django:URL conf、url 模板标签的最佳实践

JPEG 的 Django ImageField 问题

python - 在 Django 中显示来自数据库的动态数据

django - crispy_forms_tag' 不是有效的标签库