Этому вопросу уже полвека, поэтому, обновляя свой вопрос, я должен объяснить, что я, по крайней мере, киваю в прошлое, где некоторые функции могли отсутствовать.
В наши дни самый простой способ обработки слизней в формах - просто использовать django.models.SlugField
. Он подтвердит себя и подразумевает, что это поле является индексом.
Если вы не используете это в модели, вы все равно можете подключить тот же валидатор, который использует SlugField:
from django.core.validators import validate_slug
slug = forms.CharField(..., validators=[validate_slug])
Если вы просто хотите выполнить закулисную проверку или написать свой собственный валидатор, вы можете использовать аналогичную технику для определения в Django действительного слага. Это просто скомпилированное регулярное выражение, которое использует validate_slug выше:
from django.core.validators import slug_re
if slug_re.match(...):
...
Я не могу представить, что это изменится, но, привязавшись к идее Джанго о слизне, вы обеспечите последовательность, если Джанго действительно изменится однажды.