在类 Index(TemplateView) 中使用 request.user
Posted
技术标签:
【中文标题】在类 Index(TemplateView) 中使用 request.user【英文标题】:Use request.user in class Index(TemplateView) 【发布时间】:2016-12-27 22:07:57 【问题描述】:我正在尝试实现这个:
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)
而且我不知道如何实现它......有什么帮助吗?此代码不起作用有错误:“未定义的名称'请求'”
【问题讨论】:
【参考方案1】:在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)
【讨论】:
它的工作...但是'来自 django.utils.decorator method_decorator' 应该是'from django.utils.decorator import method_decorator'以上是关于在类 Index(TemplateView) 中使用 request.user的主要内容,如果未能解决你的问题,请参考以下文章
每月项目数在 CreateView 中有效,但在 TemplateView 中无效
authenticate()和login()实现用户登录 | Django