2014-04-25 2 views
5

django-allauth의 필드에 대한 추가 유효성 검사를하고 싶습니다. 예를 들어 무료 이메일 주소를 사용하지 못하게하고 싶습니다. 그래서 가입시이 메서드를 실행하고 싶습니다.Django-Allauth의 사용자 정의 폼 유효성 검사

def clean_email(self): 
    email_domain = self.cleaned_data['email'].split('@')[1] 
    if email_domain in self.bad_domains: 
     raise forms.ValidationError(_("Registration using free email addresses is prohibited. Please supply a different email address.")) 

마찬가지로 전자 메일 주소가 아닌 다른 필드에서 사용자 지정 유효성 검사를 실행하고 싶습니다. 이것을 어떻게 할 수 있습니까?

답변

4

allauth 구성에는 일부 어댑터가 있습니다. 예를 들면 다음과 같습니다.

ACCOUNT_ADAPTER (="allauth.account.adapter.DefaultAccountAdapter") 
    Specifies the adapter class to use, allowing you to alter certain default behaviour. 

기본 어댑터를 재정 의하여 새로운 어댑터를 지정할 수 있습니다. clean_email 메소드를 무시하십시오. , https://github.com/pennersr/django-allauth/blob/master/allauth/account/adapter.py

+0

이메일 주소를 거부 할 수있는'django.forms.ValidationError' 예외를 발생 :

class MyCoolAdapter(DefaultAccountAdapter): def clean_email(self, email): """ Validates an email value. You can hook into this if you want to (dynamically) restrict what email addresses can be chosen. """ *** here goes your code *** return email 

그런 다음 settings.py

ACCOUNT_ADAPTER = '**app**.MyCoolAdapter' 

확인의 기본 동작에 ACCOUNT_ADAPTER를 수정 . – Flimm

+0

다른 양식 필드에서이 작업을 수행하는 방법은 무엇입니까? – Hakim