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

Jon*_*edy 2 django django-templates django-views django-rest-framework

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

我有一个有效的模板视图.

class theTableView(generic.TemplateView):
    template_name = 'adminTable.html'
Run Code Online (Sandbox Code Playgroud)

我想做的事情看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

我能够在数据的rest_framework api返回中执行此操作.

我需要能够检查用户权限并根据结果将它们重定向到相应的template_name.

任何帮助表示赞赏.谢谢.

Nik*_*tin 6

您可以通过覆盖这样的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]
Run Code Online (Sandbox Code Playgroud)