1
If you need the request when validating the form, you should simply pass it in.
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request')
super(MyForm, self).__init__(*args, **kwargs)
def clean(self):
if is_ip_banned(self.request):
raise forms.ValidationError('You have been banned')
…
class MyView(forms.Form):
def get_form(self, form_class):
form_kwargs = self.get_form_kwargs()
form_kwargs['request'] = self.request
return form_class(**form_kwargs)
Source:stackexchange.com