Django:员工装饰者

2024-02-18

我正在尝试为 Django 编写一个“仅限员工”的装饰器,但我似乎无法让它工作:

def staff_only(error='Only staff may view this page.'):
    def _dec(view_func):
        def _view(request, *args, **kwargs):
            u = request.user
            if u.is_authenticated() and u.is_staff:
                return view_func(request, *args, **kwargs)
            messages.error(request, error)
            return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('home')))
        _view.__name__ = view_func.__name__
        _view.__dict__ = view_func.__dict__
        _view.__doc__ = view_func.__doc__
        return _view
    return _dec

尝试去从这里跟随线索 http://passingcuriosity.com/2009/writing-view-decorators-for-django/。我越来越:

'WSGIRequest' object has no attribute '__name__'

但如果我把这 3 行去掉,我只会得到一个无用的“内部服务器错误”。我在这里做错了什么?


该装饰器已经存在

from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required

Trunk: http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/views/decorators.py http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/views/decorators.py

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:员工装饰者 的相关文章

随机推荐