从模板中获取Django表单小部件的类型

我正在遍历表单的字段,对于某些字段,我希望布局略有不同,需要更改HTML。

为了准确地做到这一点,我只需要知道小部件类型。它的类名或类似名称。在标准python中,这很容易!field.field.widget.__class__.__name__

不幸的是,你不允许访问模板中的下划线变量。大!

你可以进行测试,field.field.widget.input_type但这仅适用于文本/密码<input ../>类型。我需要更多的分辨率。

对我而言,无论看起来多么困难,在模板级别执行此操作都是最有意义的。我已经将处理字段的HTML的部分代码外包给了包含在字段循环中的单独模板。这意味着它在ModelForms和standard上是一致Form的(如果我写了一个中间Form类,那是不对的)。

回答:

Django 1.11开始,你可以使用widget.input_type。例:

{% for field in form.visible_fields %}

<input type="{{ field.field.widget.input_type }}"

id="{{ field.id_for_label }}"

name="{{ field.html_name }}"

placeholder="{{ field.label }}"

maxlength="{{ field.field.max_length }}" />

{% endfor %}

以上是 从模板中获取Django表单小部件的类型 的全部内容, 来源链接: utcz.com/qa/411269.html

回到顶部