Django: スタッフデコレータが質問する

Django: スタッフデコレータが質問する

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

しようとするここから先は指示に従ってください. 取得しています:

'WSGIRequest' object has no attribute '__name__'

しかし、この 3 行を削除すると、役に立たない「内部サーバー エラー」が表示されます。何が間違っているのでしょうか?

ベストアンサー1

このデコレータは既に存在します

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

@staff_member_required

トランク:http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/views/decorators.py

おすすめ記事