The answer by Ber - storing it in threadlocals - is a very bad idea. There's absolutely no reason to do it this way.
A much better way is to override the form's
__init__ method to take an extra keyword argument,
request. This stores the request in the form , where it's required, and from where you can access it in your clean method.
class MyForm(forms.Form): def __init__(self, *args, **kwargs): self.request = kwargs.pop('request', None) super(MyForm, self).__init__(*args, **kwargs) def clean(self): ... access the request object via self.request ...
and in your view:
myform = MyForm(request.POST, request=request)