【问题标题】:Use request.user in class Index(TemplateView)在类 Index(TemplateView) 中使用 request.user
【发布时间】: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)

而且我不知道如何实现它......有什么帮助吗?此代码不起作用有错误:“未定义的名称'请求'”

【问题讨论】:

    标签: python django django-templates django-views django-rest-framework


    【解决方案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'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2018-01-23
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多