【问题标题】:How to detect type of form element in Django template?如何检测 Django 模板中表单元素的类型?
【发布时间】:2014-02-28 17:38:47
【问题描述】:

我正在渲染表单模板。相关代码是这样的:

{% 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。以此类推。

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

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

【问题讨论】:

标签: django django-forms django-templates


【解决方案1】:

我相信您必须使用自定义模板标签,详细说明here。这个answer 解释了使用自定义模板标签的解决方案的类似问题。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 2012-02-09
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多