【问题标题】:How do I set the template_name using generic.TemplateView based on is_authenticated vs is_superuser?如何使用基于 is_authenticated 与 is_superuser 的 generic.TemplateView 设置模板名称?
【发布时间】:2015-07-21 00:12:15
【问题描述】:

我正在使用 Django。 我正在尝试根据 django 用户访问级别设置要使用的模板。 如您所见,我正在使用 LoginRequiredMixin 和 generic.TemplateView。

这是我想做的:

此代码在views.py中使用。

class TableView(LoginRequiredMixin, generic.TemplateView):
    if user.is_superuser == True:
        template_name = 'achtable.html'
    elif user.is_authenticated:
        template_name = 'userachtable.html'

不幸的是,我似乎无法访问该用户。以这种方式。

在views.py 中,我也有根据用户身份验证按预期工作的api 视图。如下:

class MyList(LoginRequiredMixin, generics.ListCreateAPIView):
    serializer_class = MySerializer
    def get_queryset(self):
        if self.request.user.is_superuser==True:
            queryset = ImportantStuff.objects.all()
            return queryset
        elif self.request.user.is_authenticated():
            queryset = ImportantStuff.objects.all()
            return queryset.filter(claimed=False)

感谢任何输入。谢谢。

【问题讨论】:

    标签: python django django-templates django-authentication login-required


    【解决方案1】:

    您需要请求,就像在 MyList 中所做的那样(使用函数)。

    class TableView(LoginRequiredMixin, generic.TemplateView):
        def get_template_names(self):
            if self.request.user.is_superuser:
                 return 'superadmin/path/template.html'
            return 'regular/path/template.html'
    

    顺便说一句:

    if self.request.user.is_superuser==True:
    

    与(更好的版本)相同:

    if self.request.user.is_superuser:
    

    如果您使用LoginRequiredMixin,则您已经知道该用户已通过身份验证,因此您的第二个if 语句是无用的。

    这里是MyList 更新:

    class MyList(LoginRequiredMixin, generics.ListCreateAPIView):
        serializer_class = MySerializer
        def get_queryset(self):
            if self.request.user.is_superuser:
                return ImportantStuff.objects.all()
            return ImportantStuff.objects.filter(claimed=False)
    

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 2022-10-19
      • 2010-12-10
      • 2020-10-13
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      相关资源
      最近更新 更多