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