РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
409 of 818 menu

Поле CharField

Поле CharField является одним из наиболее часто используемых полей в формах Django. Оно предназначено для приёма текстовых данных от пользователя. При создании экземпляра поля можно задать множество параметров, определяющих его поведение: максимальную и минимальную длину, обязательность заполнения, начальное значение, виджет отображения и другие. Поле автоматически выполняет валидацию введённых данных на основе переданных параметров.

Синтаксис

from django import forms class MyForm(forms.Form): my_field = forms.CharField( max_length=100, min_length=3, required=True, initial='Default value', widget=forms.TextInput(attrs={'class': 'form-control'}) )

Основные параметры

Параметр max_length задаёт максимально допустимую длину строки, а min_length - минимальную. Если введённое значение не соответствует этим ограничениям, форма не пройдёт валидацию. Параметр required определяет, является ли поле обязательным для заполнения. С помощью initial можно задать начальное значение, которое будет отображаться в поле при загрузке формы.

Пример . С валидацией длины

Создадим форму для ввода имени пользователя с ограничением длины от 3 до 20 символов:

from django import forms class UserForm(forms.Form): username = forms.CharField( min_length=3, max_length=20, required=True, label='Username', help_text='Enter a username between 3 and 20 characters.' ) # Создаём экземпляр формы с переданными данными form = UserForm({'username': 'john_doe'}) if form.is_valid(): print("Form is valid") print(form.cleaned_data['username'])

Результат выполнения кода:

"Form is valid" "john_doe"

Пример . С использованием виджета

Параметр widget позволяет указать, какой HTML-элемент будет использоваться для отображения поля. По умолчанию используется TextInput. Можно использовать Textarea для многострочного ввода:

from django import forms class ArticleForm(forms.Form): title = forms.CharField(max_length=200) content = forms.CharField( widget=forms.Textarea(attrs={'rows': 10, 'cols': 80}), label='Article content' ) # Пример работы с формой form = ArticleForm({ 'title': 'My Article', 'content': 'This is the content of the article.' }) if form.is_valid(): print("Article saved successfully") print(form.cleaned_data['title'])

Результат выполнения кода:

"Article saved successfully" "My Article"

Пример . С начальным значением

Используем параметр initial для предзаполнения поля при отображении формы:

from django import forms class ProfileForm(forms.Form): bio = forms.CharField( initial='Tell something about yourself', label='Biography', widget=forms.Textarea ) # Создаём пустую форму form = ProfileForm() print(form['bio'].value())

Результат выполнения кода:

"Tell something about yourself"

Пример . С кастомными сообщениями об ошибках

Параметр error_messages позволяет переопределить стандартные сообщения валидации:

from django import forms class UserRegistrationForm(forms.Form): username = forms.CharField( min_length=3, max_length=20, required=True, error_messages={ 'required': 'Username is required.', 'min_length': 'Username must be at least 3 characters.', 'max_length': 'Username cannot exceed 20 characters.' } ) form = UserRegistrationForm({'username': 'ab'}) if not form.is_valid(): print(form.errors['username'][0])

Результат выполнения кода:

"Username must be at least 3 characters."

Смотрите также

  • поле IntegerField,
    которое используется для ввода целых чисел
  • поле EmailField,
    которое валидирует ввод как email-адрес
  • виджет Textarea,
    который отображает поле как многострочный текст
  • валидатор MaxLengthValidator,
    который проверяет максимальную длину строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить