2014-04-25 1 views
5

Ich möchte einige zusätzliche Validierung für Felder in Django-Allauth tun. Zum Beispiel möchte ich verhindern, dass Sie kostenlose E-Mail-Adressen verwenden. So möchte ich diese Methode auf Anmeldung ausführenBenutzerdefinierte Formularvalidierung in Django-Allauth

Ebenso möchte ich benutzerdefinierte Validierung auf anderen Feldern als E-Mail-Adresse ausführen. Wie kann ich das durchführen?

Antwort

4

In der allauthen Konfiguration sind einige Adapter vorhanden. Beispiel:

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

Sie können einen neuen Adapter angeben, indem Sie den Standardadapter überschreiben. Überschreiben Sie einfach die Methode 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 

ändern Sie dann die ACCOUNT_ADAPTER auf der settings.py

ACCOUNT_ADAPTER = '**app**.MyCoolAdapter' 

Überprüfen Sie das Standardverhalten auf: https://github.com/pennersr/django-allauth/blob/master/allauth/account/adapter.py

+0

eine E-Mail-Adresse abzulehnen, werfen eine 'django.forms.ValidationError' Ausnahme . – Flimm

+0

Wie mache ich das auf einem anderen Formularfeld? – Hakim