2011-06-13 60 views
11

如何將用戶對象或請求傳遞給我的表單進行驗證?傳遞用戶,請求到表單

例如,我希望能夠做這樣的事情 -

class Form(forms.Form): 
    ... 
    def clean(self) 
     user = request.user # how to get request.user here? 
     user = User   # how to pass the actual User object? 

謝謝。

回答

27

只是把它傳遞到構造函數,並將其存儲爲一個實例變量:

class MyForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     self.request = kwargs.pop("request") 
     super(MyForm, self).__init__(*args, **kwargs) 

    def clean(self): 
     print self.request.user 
     ... 

在你看來:

form = MyForm(..., request=request) 

如果使用基於類的視圖(在本例中,CreateView的):

class MyCreateView(CreateView): 

    ... 

    def get_form_kwargs(self): 
     kwargs = super(MyCreateView, self).get_form_kwargs() 
     kwargs.update({'request': self.request}) 
     return kwargs 
+1

奇怪,但這不工作:NameError:name'request'未定義 – 2016-02-29 09:59:02