Настройка формы и ее полей

Последнее обновление: 20.08.2022

label

Свойство label позволяет установить текстовую метку, которая отображается рядом с полей. По умолчанию она отображает название самого поля с большой буквы. Например:

from django import forms

class UserForm(forms.Form):
    name = forms.CharField(label="Имя")
    age = forms.IntegerField(label="Возраст")

Эта форма сформирует следующие поля ввода:

Установка меток для полей ввода в формах django

widget

Параметр 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:

виджеты в формах Django

Значения по умолчанию

С помощью параметра 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

Параметр help_text устанавливает подсказку рядом с полем ввода:

from django import forms

class UserForm(forms.Form):
    name = forms.CharField(help_text="Введите свое имя")
    age = forms.IntegerField(help_text="Введите свой возраст")
Текстовая подсказка help_text в формах Django

Настройка вида формы

С помощью специальных методов можно настроить общее отображение формы:

  • 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>
Настройка вида формы Django
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850