Django request.user未被传递到View类get_context_data

时间:2015-11-25 03:50:24

标签: django

我目前正在努力将邮递员应用程序集成到我自己的网站中。当您想要访问邮递员的收件箱时,您需要登录.urls.py中的代码是

url(r'^inbox/(?:(?P<option>'+OPTIONS+')/)?$', InboxView.as_view(), name='inbox')

检查您是否已登录的代码片段在此处:

class FolderMixin(NamespaceMixin, object):
    http_method_names = ['get']

    @login_required_m
    def dispatch(self, *args, **kwargs):
        return super(FolderMixin, self).dispatch(*args, **kwargs)

    def get_context_data(self, **kwargs):
        ...

class InboxView(FolderMixin, TemplateView):
    folder_name = 'inbox'
    view_name = 'inbox'   
    template_name = 'postman/inbox.html'`

现在我的问题是request.user.is_authenticated没有传递到上面的get_context_data(self, **kwargs)。例如,在我的base.html模板中,下面将显示hihihihi:

{% if request.user.is_authenticated %}
hihihihi
{% endif %}

意味着用户实际上已经过身份验证。但是,当我在get_context_data中的class FolderMixin函数中测试时,如下所示:

def get_context_data(self, **kwargs):
    ...
    if self.request.user.is_authenticated():
        print("user is authenticated")
    print(self.request.user)

&#34;用户已通过身份验证&#34;不打印,self.request.user返回AnonymousUser。所以我的问题是为什么request.user没有传递给self.request.user,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为你的问题是扩展类的顺序,试试这个:

class InboxView(TemplateView, FolderMixin):
    ...