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

SlugField

SlugField - это поле формы, предназначенное для ввода и валидации слаг-строк. Слаг - это часть URL-адреса, которая обычно формируется из заголовка статьи, названия товара или другого текста и содержит только безопасные символы. По умолчанию поле проверяет, что строка состоит из латинских букв, цифр, символов дефиса (-) и подчёркивания (_). Это поле часто используется в формах для создания новых записей или редактирования существующих, чтобы гарантировать корректность формируемых ссылок.

При создании экземпляра поля можно передать набор параметров, которые управляют его поведением. Основные параметры: max_length определяет максимальную длину строки, required указывает, обязательно ли поле для заполнения, label задаёт текстовую метку, а initial позволяет установить начальное значение. Дополнительно можно передать параметр allow_unicode со значением True, чтобы разрешить использование символов Unicode в слаге.

Синтаксис

from django import forms class MyForm(forms.Form): slug = forms.SlugField( max_length=100, required=True, label="Slug", initial="default-slug" )

Пример . Использование в форме

Определим простую форму для создания статьи с полем для слага:

from django import forms class ArticleForm(forms.Form): title = forms.CharField(max_length=200, label="Заголовок") slug = forms.SlugField(max_length=100, label="Слаг", help_text="Только латиница, цифры, дефис и подчёркивание") content = forms.CharField(widget=forms.Textarea, label="Содержание")

Пример . Валидация и обработка данных

Создадим экземпляр формы с переданными данными и проверим, прошла ли она валидацию. Если данные корректны, слаг можно использовать для построения URL-адреса:

from django import forms class ArticleForm(forms.Form): title = forms.CharField(max_length=200) slug = forms.SlugField(max_length=100) content = forms.CharField(widget=forms.Textarea) # Пример корректных данных data = { "title": "Моя первая статья", "slug": "moya-pervaya-statya", "content": "Текст статьи..." } form = ArticleForm(data) if form.is_valid(): print("Форма валидна") print(f"Слаг: {form.cleaned_data['slug']}") else: print("Ошибки валидации:", form.errors)

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

"Форма валидна" "Слаг: moya-pervaya-statya"

Пример . С некорректными данными

Попробуем передать строку, содержащую недопустимые символы, например, пробелы или кириллицу (при выключенном параметре allow_unicode):

from django import forms class ArticleForm(forms.Form): title = forms.CharField(max_length=200) slug = forms.SlugField(max_length=100) content = forms.CharField(widget=forms.Textarea) # Некорректные данные: пробел и кириллица invalid_data = { "title": "Моя вторая статья", "slug": "моя статья 2", "content": "Текст статьи..." } form = ArticleForm(invalid_data) if form.is_valid(): print("Форма валидна") else: print("Ошибки валидации:", form.errors) print("Ошибка в поле slug:", form.errors.get("slug"))

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

"Ошибки валидации: <ul class='errorlist'><li>slug<ul class='errorlist'><li>Введите корректный слаг, состоящий из букв, цифр, дефисов и подчёркиваний.</li></ul></li></ul>" "Ошибка в поле slug: ['Введите корректный слаг, состоящий из букв, цифр, дефисов и подчёркиваний.']"

Пример . С поддержкой Unicode

Если требуется разрешить использование символов Unicode в слаге, передайте параметр allow_unicode=True:

from django import forms class UnicodeSlugForm(forms.Form): slug = forms.SlugField(allow_unicode=True, label="Unicode-слаг") data = {"slug": "привет-мир-2024"} form = UnicodeSlugForm(data) if form.is_valid(): print("Форма валидна") print(f"Слаг: {form.cleaned_data['slug']}") else: print("Ошибки:", form.errors)

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

"Форма валидна" "Слаг: привет-мир-2024"

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

  • поле CharField,
    которое используется для ввода обычных строк без специальной валидации
  • поле RegexField,
    которое позволяет задать собственное регулярное выражение для валидации
  • метод validate_slug,
    который используется для ручной проверки строки на корректность слага
  • метод validate_unicode_slug,
    который проверяет слаг с поддержкой Unicode
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить