@staff_member_required 抛出“对象没有属性‘用户’”

Jor*_*jon 1 python django django-admin

我正在使用此装饰器使此页面仅供员工使用:

class MyModelAdmin(admin.ModelAdmin):

    @staff_member_required
    def dostuff(self, request):
        return HttpResponse("This is secret")

    def get_urls(self):
        urls = super(MyModelAdmin, self).get_urls()
        my_urls = [
            url(r"^dostuff/$", self.dostuff)
        ]
        return my_urls + urls
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,我得到:

AttributeError: 'MyModelAdmin' object has no attribute 'user'

没有装饰器,视图工作正常(但任何人都可以看到它)。

knb*_*nbk 5

您需要使用method_decorator()

from django.utils.decorators import method_decorator

class MyModelAdmin(admin.ModelAdmin):

    @method_decorator(staff_member_required)
    def dostuff(self, request):
        return HttpResponse("This is secret")
Run Code Online (Sandbox Code Playgroud)