Django: очистка_data для специальных символов и знаков препинания

Я хочу проверить поле Name в моей форме.

Теперь у меня в forms:

 def clean_name(self):
        name = self.cleaned_data['name']
        if re.search(r'\d', name):
            raise ValidationError('The name must not have numbers')
        if re.search(r'\s', name):
            raise ValidationError('The name must not have spaces')
        return name

Но я также хочу создать проверку для специальных символов и знаков препинания.

Я пробовал некоторые способы с [[:punct:]], но это возвращает мне ошибку, и я предполагаю, что это не работает с Python или нужен другой способ использования.

Есть ли какой-нибудь способ сделать это, мне нужна помощь.

Думаю, вы можете сделать это вручную, составив список специальных символов и знаков препинания, и выполнить итерацию для каждого символа поля name, пример здесь:


def clean_name(self):
    name = self.cleaned_data['name']
    
    special_puncs = ['!', '@', '#', '$', '%', '&', '*', '(', ')'] # you can also include more chars and puncs
    for i in name:
        if i in special_puncs:
            raise ValidationError(
                'Name cannot contains special chars and punctuations.')

    if re.search(r'\d', name):
        raise ValidationError('The name must not have numbers')
    if re.search(r'\s', name):
        raise ValidationError('The name must not have spaces')
    return name
Вернуться на верх