在通用视图中验证用户?

时间:2014-12-19 00:07:11

标签: python django

是否可以扩展通用视图以允许用户身份验证?如果用户未登录,我希望我的视图限制模型返回结果的数量。

class CustomGalleryDetailView(DetailView):

    def get_queryset(self):
        if request.user.is_authenticated():
            return Gallery.objects.on_site().is_public()
        else:
            return Gallery.objects.on_site().is_public()[:5]

这将返回NameError全局名称' request'没有定义。

我想扩展通用视图的原因是,我在这里简单地覆盖了我的程序中第三方应用程序使用的许多视图中的一个,并且我希望与主要依赖的其他视图保持一定的一致性在通用视图上。

1 个答案:

答案 0 :(得分:4)

只需将其更改为self.request.user.is_authenticated(),您的课程就会变为:

class CustomGalleryDetailView(DetailView):

    def get_queryset(self):
        if self.request.user.is_authenticated():
            return Gallery.objects.on_site().is_public()
        else:
            return Gallery.objects.on_site().is_public()[:5]