2014-11-21 4 views
3

클래스 기반 일반 뷰에서 request.user에 액세스하려면 어떻게해야합니까?Django 클래스 기반 일반 뷰의 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"를 작성하는 경우, "요청이 정의되지 않은"오류를 얻을 "자기"정의되지 않은, 이해할 수 있습니다. 이 문제를 해결할 수있는 몇 가지 방법을 생각할 수 있지만 장고 클래스 기반 일반 뷰에서 request.user에 액세스하는 방법에 대한 표준화/합의가 있는지 알고 싶습니다.

답변

7

문제는 당신이 클래스 레벨에서 코드를 넣어하지 않아야한다는 것입니다 :

그래서 당신이 사용하려는 사용자를 얻을 수 있습니다. template_name 뒤에 오는 모든 코드는 뷰가 호출 될 때가 아니라 클래스가 정의 될 때 실행됩니다. 이 시점에서 selfrequest이 정의되지 않았을뿐만 아니라 today()도 프로세스 시작시 수정됩니다.

모든 코드는 get_context_data 안에 있으며 여기에서 self.request.user 할 수 있습니다.

2

클래스 기반보기에서 self.request으로 요청에 액세스 할 수 있습니다.

self.request.user 
관련 문제