2009-02-18 10 views
8

Estoy intentando validar un formulario, de modo que si la IP del usuario (request.META['REMOTE_ADDR']) está en una tabla BlockedIPs, fallaría la validación. Sin embargo, no tengo acceso a la variable request en Form. ¿Cómo lo hago? Gracias.IP prohibidas en la validación de formulario de Django

Respuesta

9

ponerlo a disposición de su formulario anulando __init__ para que pueda ser aprobada en durante la construcción (o usted podría pasar el IP en sí):

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

Ahora sólo tiene que pasar el objeto request como el primer argumento al inicializar el formulario y sus métodos de validación personalizados tendrán acceso a él a través de self.request:

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

gracias, eso es exactamente lo que estaba buscando – pitr

Cuestiones relacionadas