2013-05-06 1 views
2

allauth.account.forms.BaseSignupForm에있는 clean_email() 메소드를 어떻게 대체 할 수 있습니까?Django-allauth의 clean_email() 메소드를 오버라이드

from allauth.account.forms import BaseSignupForm 

    class Extended_BaseSignupForm(BaseSignupForm): 
     def clean_email(self): 
      data = self.cleaned_data['email'] 
      if "@gmail.com" not in data: # any check you need 
       raise forms.ValidationError("Must be a gmail address") 
      if app_settings.UNIQUE_EMAIL: 
       if data and email_address_exists(data): 
        raise forms.ValidationError \ 
         (_("A user is registered with this e-mail address.")) 
      return data 

최우선의 목적은 일회용 이메일 ID를 등록하지 못하도록하는 것입니다 가 나는 Forms.py에서 다음을 시도했다.

+0

전체 urls.py를 붙여 넣어야합니다. – jpic

답변

5

이것은 allauth의 다음 버전에서 더 쉽게 만들어졌습니다. 당신은 단순히 여기의 clean_email 어댑터 메소드를 오버라이드 (override) 할 수 있습니다

https://github.com/pennersr/django-allauth/blob/4bb9e0170f37d8196bd0c4a78e83adb7b779c113/allauth/account/adapter.py#L175

가 오버라이드 (override) 방법을 포함하는 사용자 정의 어댑터를 가리 키도록 ACCOUNT_ADAPTER 설정을 사용합니다.

+0

정보를 제공해 주셔서 감사합니다. 지금 업데이트하는 것이 유일한 해결책입니다. –

+0

@pennersr : allauth는 최고입니다. 내 정규 표현식으로'clean_username'을 오버라이드 (override)하는 것과 같은 논리를 따르고 있습니다. 그러나 나는 그 변경 사항을 다시 _attribute_unique_username_base (allauth에서)와'UserChangeForm' (django에서)의 두 장소에서 복제해야한다고 생각합니다. 그 맞습니까? – Medorator