class ItemForm(forms.Form):
name = forms.CharField(widget=forms.TextInput)
description = forms.CharField(widget=forms.TextInput)
def __init__(self, *args, **kwargs):
super(ItemForm, self).__init__(*args, **kwargs)
for field_name, field in self.fields.items():
field.widget.attrs.update({
'class': 'form-control',
'id': f"defaultForm-{field_name}",
})
<form method="post">
{% csrf_token %}
<div class="row">
{% for field in form %}
<div class="col-md-4 mb-4">
<div class="form-group">
<label for="{{ field.auto_id }}">{{ field.label }}</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="fas fa-envelope"></i>
</span>
</div>
{{ field }}
</div>
</div>
</div>
{% endfor %}
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>