我试图在request.user中获取表单的clean方法,但是如何访问请求对象?我可以修改clean方法以允许输入变量吗?
Ber的答案-将其存储在threadlocals中-是一个非常糟糕的主意。绝对没有理由这样做。
threadlocals
更好的方法是重写表单的__init__方法以使用额外的关键字参数request。这会将请求存储在表单中,在需要的地方,你可以从此处以干净的方法访问它。
__init__
request
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 ...
并且在你看来:
myform = MyForm(request.POST, request=request)