Próbuję napisać „personel tylko” dekorator dla Django, ale nie wydaje się uzyskać go do pracy:Django: Staff Dekorator
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
Próbując follow lead from here. Dostaję:
'WSGIRequest' object has no attribute '__name__'
Ale jeśli wziąć te 3 linie, ja po prostu bezużyteczne „wewnętrzny błąd serwera”. Co ja tu robię źle?
Och ... więc jak to obejść? – mpen
Zaczynam rozumieć, więc jeśli mam wiele funkcji w moim widoku, muszę dodać @staffonly przed każdym z nich? –