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

Валидатор validate_unicode_slug

Валидатор validate_unicode_slug предназначен для проверки, что переданная строка может использоваться в качестве слага, содержащего юникод-символы. В отличие от валидатора validate_slug, который допускает только латиницу, этот валидатор разрешает использование букв из любого алфавита, цифр, дефисов и знаков подчеркивания. Валидатор вызывается с одним обязательным аргументом - строкой для проверки, и выбрасывает исключение ValidationError, если строка не соответствует требованиям слага.

Синтаксис

from django.core.validators import validate_unicode_slug from django.core.exceptions import ValidationError validate_unicode_slug(value)

Пример

Давайте проверим строку, которая является допустимым юникод-слагом:

from django.core.validators import validate_unicode_slug from django.core.exceptions import ValidationError try: validate_unicode_slug("привет-мир_2025") print("Строка является допустимым слагом") except ValidationError as e: print(f"Ошибка: {e.message}")

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

"Строка является допустимым слагом"

Пример

Давайте проверим строку, которая содержит пробелы и специальные символы:

from django.core.validators import validate_unicode_slug from django.core.exceptions import ValidationError try: validate_unicode_slug("привет мир!") print("Строка является допустимым слагом") except ValidationError as e: print(f"Ошибка: {e.message}")

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

"Ошибка: Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."

Пример

Использование валидатора в поле модели Django:

from django.db import models from django.core.validators import validate_unicode_slug class Article(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(validators=[validate_unicode_slug], allow_unicode=True) def __str__(self): return self.title

Пример

Использование валидатора в форме Django:

from django import forms from django.core.validators import validate_unicode_slug from django.core.exceptions import ValidationError class ArticleForm(forms.Form): slug = forms.CharField(validators=[validate_unicode_slug]) def clean_slug(self): data = self.cleaned_data['slug'] try: validate_unicode_slug(data) except ValidationError as e: raise forms.ValidationError(e.message) return data

Теперь создадим экземпляр формы с корректным значением:

form = ArticleForm({'slug': 'статья-о-джанго'}) res = form.is_valid() print(res) print(form.cleaned_data)

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

True {'slug': 'статья-о-джанго'}

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

  • валидатор validate_slug,
    который проверяет строку на соответствие латинскому слагу
  • валидатор validate_email,
    который проверяет корректность email-адреса
  • валидатор URLValidator,
    который проверяет корректность URL-адреса
  • валидатор RegexValidator,
    который проверяет строку по регулярному выражению
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить