我正在使用这个装饰器使这个页面只有员工:
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
但出于某些原因我得到了:
AttributeError: 'MyModelAdmin' object has no attribute 'user'
没有装饰器,视图工作正常(但任何人都可以看到它)。
答案 0 :(得分:4)
您需要使用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")