这在基于类的表单中很容易做到。我的项目中 form-control 是一个 css 类的示例。
from django.forms import ModelForm, TextInput
class ServerForm(ModelForm):
class Meta:
model = Server
fields = ['name', 'ip', 'port']
widgets = {
'name': TextInput(attrs={'class': 'form-control'}),
'ip': TextInput(attrs={'class': "form-control"}),
'port': TextInput(attrs={'class': 'form-control'}),
}
然后我的模板看起来像:
{% for field in form %}
<div class="form-group">
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}
生成
<form method="POST">
<input type="hidden" name="csrfmiddlewaretoken" value="xxxxxx">
<div class="form-group">
<label for="id_name">Name:</label>
<input class="form-control" id="id_name" maxlength="64" name="name" type="text">
</div>
<div class="form-group">
<label for="id_ip">Ip:</label>
<input class="form-control" id="id_ip" maxlength="20" name="ip" type="text">
</div>
<div class="form-group">
<label for="id_port">Port:</label> <input class="form-control" id="id_port" name="port" type="text">
</div>
<div class="form-group">
<button type="submit" class="save btn btn-default">Add/Edit Server</button>
</div>
</form>
关键是 Meta 类的 widgets 字段。在那里你可以定义你想要使用的 django.forms 中的哪个小部件,然后可以定义你想要的任何属性。这里我们使用“class”并将其参数设置为“form-control”。您可以轻松替换任意数量的 CSS 类,即
'name': TextInput(attrs={'class': 'form-control xs my-other-css-class'}),
我经常将它与 bootstrap 一起使用,它工作正常,只要您沿线的某个地方导入 bootstrap(从 django-bootstrap 插件,或仅通过基本模板中的静态文件)