从模板中获取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