2014-11-21 55 views
3

如何訪問基於Classed通用視圖內的request.user?在Django Classed Based通用視圖中訪問request.user

這是代碼:

class TodayView(TemplateView): 
    template_name = "times/today.html" 
    if Records.objects.all().count() > 0: 
     last_record = Records.objects.latest('id') 
    else: 
     last_record = None 
    actual_time = datetime.today() 
    activities = Activity.objects.filter(owner=request.user) 

    def get_context_data(self, **kwargs): 
     context = super(TodayView, self).get_context_data(**kwargs) 
     context["today"] = self.actual_time 

     return context 

現在,我取「請求沒有定義」,如果我寫「self.request.user」的錯誤,我得到的「自我」沒有定義,這是可以理解的。我可以想出幾種方法來解決這個問題,但我想知道是否有關於如何訪問基於Django Classed Generic Views的request.user的標準化/共識。

回答

7

的問題是,你不應該在類級別將代碼。當定義類時,將執行template_name之後的所有代碼,而不是在調用視圖時執行。 selfrequest不僅在這一點上定義,而且today()將固定在進程啓動。

所有的代碼都屬於get_context_data,你可以從那裏做self.request.user

2

您可以在self.request的基於分類的視圖中訪問請求。

所以讓你使用的用戶:

self.request.user