2014-04-25 19 views
5

Tôi muốn thực hiện xác thực thêm trên các trường trong django-allauth. Ví dụ tôi muốn ngăn chặn bằng cách sử dụng địa chỉ email miễn phí. Vì vậy, tôi muốn chạy phương pháp này trên đăng kýXác thực biểu mẫu tùy chỉnh ở 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.")) 

Tương tự như vậy tôi muốn chạy xác nhận tùy chỉnh trên các lĩnh vực khác ngoài địa chỉ email. Làm thế nào tôi có thể thực hiện điều này?

Trả lời

4

Có một số bộ điều hợp trên cấu hình allauth. Ví dụ:

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

Bạn có thể chỉ định bộ điều hợp mới bằng cách ghi đè bộ mặc định. Chỉ cần ghi đè phương thức clean_email.

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 

Sau đó thay đổi ACCOUNT_ADAPTER trên settings.py

ACCOUNT_ADAPTER = '**app**.MyCoolAdapter' 

Kiểm tra hành vi mặc định trên: https://github.com/pennersr/django-allauth/blob/master/allauth/account/adapter.py

+0

Để từ chối một địa chỉ thư điện tử, nâng cao một 'django.forms.ValidationError' ngoại lệ . – Flimm

+0

làm cách nào để thực hiện việc này trên một trường biểu mẫu khác? – Hakim

Các vấn đề liên quan