2009-02-18 11 views
8

J'essaie de valider un formulaire, de sorte que si l'adresse IP de l'utilisateur (request.META['REMOTE_ADDR']) se trouve dans une table BlockedIPs, la validation échouerait. Cependant, je n'ai pas accès à la variable request dans Form. Comment fait-on ça? Merci.IP interdit dans la validation de formulaire Django

Répondre

9

Faites disponible à votre formulaire en remplaçant __init__ de sorte qu'il peut être passé pendant la construction (ou vous pouvez simplement passer l'adresse IP lui-même):

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... 

Maintenant, vous avez juste besoin de passer l'objet request comme premier argument lors de l'initialisation du formulaire et vos méthodes de validation personnalisées y auront accès par self.request:

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

merci, c'est exactement ce que je cherchais – pitr

Questions connexes