Свойство label позволяет установить текстовую метку, которая отображается рядом с полей. По умолчанию она отображает название самого поля с большой буквы. Например:
from django import forms
class UserForm(forms.Form):
name = forms.CharField(label="Имя")
age = forms.IntegerField(label="Возраст")
Эта форма сформирует следующие поля ввода:
Параметр widget позволяет задать виджет, который будет использоваться для генерации разметки html:
from django import forms
class UserForm(forms.Form):
name = forms.CharField(label="Имя")
comment = forms.CharField(label="Комментарий", widget=forms.Textarea)
По умолчанию поле CharField использует виджет forms.widgets.TextInput, который создает однострочное текстовое поле.
Однако если нам надо создать многострочное текстовое поле, то необходимо воспользоваться виджетом forms.Textarea:
С помощью параметра initial можно установить значения по умолчанию.
from django import forms
class UserForm(forms.Form):
name = forms.CharField(initial="undefined")
age = forms.IntegerField(initial=18)
Поля ввода отображаются на веб-странице в том порядке, в котором они определены в классе формы. С помощью свойства field_order можно переопределить порядок, как в классе формы:
class UserForm(forms.Form):
name = forms.CharField()
age = forms.IntegerField()
field_order = ["age", "name"]
Так и при определении объекта формы в представлении:
def index(request):
userform = UserForm(field_order = ["age", "name"])
return render(request, "index.html", {"form": userform})
Параметр help_text устанавливает подсказку рядом с полем ввода:
from django import forms
class UserForm(forms.Form):
name = forms.CharField(help_text="Введите свое имя")
age = forms.IntegerField(help_text="Введите свой возраст")
С помощью специальных методов можно настроить общее отображение формы:
as_table(): отображение в виде таблицы
as_ul(): отображение в виде списка
as_p(): каждое поле формы отобажается в отдельном параграфе
as_div(): каждое поле формы отобажается в отдельном блоке div
Применение методов:
<h2>as_table</h2>
<form method="POST">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Send" >
</form>
<h2>as_ul</h2>
<form method="POST">
{% csrf_token %}
<ul>
{{ form.as_ul }}
</ul>
<input type="submit" value="Send" >
</form>
<h2>as_p</h2>
<form method="POST">
{% csrf_token %}
<div>
{{ form.as_p }}
</div>
<input type="submit" value="Send" >
</form>