基于Django类的通用视图访问request.user

时间:2014-11-21 23:29:29

标签: django generics django-class-based-views

如何在基于Classed的通用视图中访问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 Based Generic Views上访问request.user的标准化/共识。

2 个答案:

答案 0 :(得分:9)

问题是你不应该在类级别放置代码。 {I}之后的所有代码将在定义类时执行,而不是在调用视图时执行。此时不仅没有定义template_nameself,而且还会在流程启动时修复request

所有代码都属于today(),您可以从get_context_data开始。

答案 1 :(得分:3)

您可以在self.request的基于班级的视图中访问该请求。

因此,要获得您使用的用户:

self.request.user