Свойство 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>