我可以在 django TemplateView 中设置不同的 'template_name' 吗?

Can I set different 'template_name's inside of django TemplateView?

使用 Django 视图,我想根据用户的权限级别重定向用户。

我有一个可用的模板视图。

class theTableView(generic.TemplateView):
    template_name = 'adminTable.html'

我正在尝试做的事情看起来像这样:

class TheTableView(generic.TemplateView):
    if self.request.user.is_superuser==True:
        tempTemplate = 'goodAdminTable.html'
    elseif self.request.user.is_authenticated==True:
        tempTemplate = 'goodUserTable.html'
    template_name = tempTemplate

我能够在 rest_framework api return 中为数据做到这一点。

我需要能够检查用户权限并根据结果将他们重定向到适当的 template_name。

感谢任何帮助。谢谢

您可以像这样重写 get_template_names() 方法来做到这一点

class theTableView(generic.TemplateView):
    template_name = 'adminTable.html'

    def get_template_names(self):
        if self.request.user.is_superuser:
            template_name = 'goodAdminTable.html'
        elif self.request.user.is_authenticated:
            template_name = 'goodUserTable'
        else:
            template_name = self.template_name
        return [template_name]

您可以在您的 TemplateView 中重写此方法,并在其中添加您的逻辑。

 def get_template_names (self):
      return ["your_template.html",]