2009-02-18 9 views
8

Ich versuche, ein Formular zu validieren, so dass, wenn die IP des Benutzers (request.META['REMOTE_ADDR']) in einer Tabelle BlockedIPs ist, die Validierung fehlschlagen würde. Allerdings habe ich keinen Zugriff auf request Variable in Form. Wie mache ich es? Vielen Dank.Gesperrte IPs in Django Formularüberprüfung

Antwort

9

Machen Sie es zu Ihrem Formular verfügbar durch zwingende __init__ so kann es während der Bauphase übergeben werden (oder man könnte passieren die IP selbst gerade): müssen Sie

from django import forms 

class YourForm(forms.Form) 
    # fields... 

    def __init__(self, request, *args, **kwargs): 
     self.request = request 
     super(YourForm, self).__init__(*args, **kwargs) 

    # validation methods... 

Jetzt nur noch das request Objekt wie das passieren erstes Argument, wenn die Initialisierung der Form und Ihre benutzerdefinierten Validierungsmethoden werden den Zugriff über self.request haben:

if request.method == 'POST': 
    form = YourForm(request, request.POST) 
    # ... 
else: 
    form = YourForm(request) 
# ... 
+0

dank, das ist genau das, was ich suchte – pitr