2014-04-25 5 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

अलाउथ कॉन्फ़िगरेशन पर कुछ एडाप्टर हैं। उदाहरण के लिए यह एक:

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