Django, Создание списка блокировки доменов для регистрации

Я пытаюсь создать список блокировки доменов для моей формы регистрации и у меня возникла проблема. Я создал таблицу для списка блокировки доменов и хочу, чтобы форма регистрации выдавала ошибку, если домен находится в списке блокировки. По-видимому, мой код не работает, если я не введу его в жесткий код. Как мне заставить это работать? :(

)

forms.py

class MyCustomSignupForm(SignupForm):
    first_name = forms.CharField(max_length=30, label='First Name')
    last_name = forms.CharField(max_length=30, label='Last Name')
    company_name = forms.CharField(max_length=50, label='Comapny Name')


    class Meta:
        model = DomainBlock
        fields = ('blocklist')

## block common domain from sign up
    def clean_email(self):
        data = self.cleaned_data['email']

        if data.split('@')[1].lower() in 'blocklist':
            raise forms.ValidationError("This email is not allowed")
        # if data.split('@')[1].lower() == 'gmail.com':
        #     raise forms.ValidationError("Gmail is not allowed")
        # if data.split('@')[1].lower() == 'msn.com':
        #     raise forms.ValidationError("MSN email is not allowed")
        # if data.split('@')[1].lower() == 'yahoo.com':
        #     raise forms.ValidationError("Yahoo email is not allowed")
        return data

model.py

class DomainBlock(models.Model):

    domain_id = models.AutoField(primary_key=True)
    blocklist = models.CharField('Domain Block List', max_length=50, null=True, blank=True)

Запросите вашу модель DomainBlock в чистом методе

def clean_email(self):
    data = self.cleaned_data['email']

    if DomainBlock.objects.filter(blocklist=data.split('@')[1].lower()).exists():
        raise forms.ValidationError("This email is not allowed")
    return data
Вернуться на верх