{% for fields in form %}
{{ field.label }}
{{ field }}
{% endfor %}
{{ field }}
将呈现类似于:
<input type="text" id="something_id" .../>
有没有办法让我可以渲染一个字段,而不必将其包装在标签中?因此,例如,我渲染一个字段,我得到(没有输入标记):
type='text' id='_something_id'
在这种情况下,我可以继续手动添加自定义类,以及我想要的时间和地点:
<input {{ field }} class='class class-again' required autocomplete='off' />
我有没有办法在Django中做到这一点,渲染一个没有它包裹在元素中的字段?
显然,如果对大量的字段进行处理使这种方法变得不切实际,那么这种难以格式化的方法可能会很累人。就我而言,我只是想要将一些css定制到两个字段,并且必须通过Django Forms或模板标签等,我觉得这个过程很漫长答案 0 :(得分:1)
如果您知道输入类型,则可以执行此操作:
{% for field in form %}
{{ field.label_tag }}
<input type="text" id="{{ field.id_for_label }}" name="{{ field.html_name }}" value="{{ field.value }}"/>
{% endfor %}
如果您有不同的输入类型,您仍然可以手动浏览字段而不是迭代它们(使用它们的名称,例如。form.username
)。
但是在大多数情况下,最好使用widget API在后端执行这些操作:
name = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
答案 1 :(得分:0)
有可能。您可以编写自己的HTML代码,您知道Django会为id
和name
属性指定一种格式,例如:id='something_id'
。 name
属性是重要的属性,你应该确保它与Django分配的属性相同。
另一种选择是:
# I will assume you have a field named something
something = forms.CharField(widget=forms.TextInput(attrs={'class':'class class-again''}))
这应该做你需要的。我希望这会有所帮助。