0

я пытаюсь осуществить это:Использование request.user в классе Index (TemplateView)

class Index(TemplateView): 
    if request.user.role == 'admin': 
     template_name = 'index/admin/index.html' 
    elif request.user.role == 'ff': 
     template_name = 'index/firefighter/index.html' 
    else: 
     template_name = 'index/dev/index.html' 

@method_decorator(ensure_csrf_cookie) 
def dispatch(self, *args, **kwargs): 
    return super(Index, self).dispatch(*args, **kwargs) 

И я не мысль, что, как реализовать это ... Любая помощь? Этот код не работает есть ошибка: «Не определено имя„запрос“»

ответ

2

Установите ваш шаблон в get_template_names() метод:

from django.utils.decorator import method_decorator 

class Index(TemplateView): 
    def get_template_names(self, *args, **kwargs): 
     roles_urls = {'admin': 'index/admin/index.html', 
         'ff': 'index/firefighter/index.html'} 
     default = 'index/dev/index.html' 
     return [roles_urls.get(self.request.user.role, default)] 

    @method_decorator(ensure_csrf_cookie) 
    def dispatch(self, *args, **kwargs): 
     return super(Index, self).dispatch(*args, **kwargs) 
+0

Это работа ... но «от django.utils.decorator method_decorator» должно быть 'from django.utils.decorator import method_decorator ' –

Смежные вопросы