Ich habe einige Benutzer in meiner Anwendung sagen A, B und C. Wenn jede Art von Benutzer authentifiziert ich nicht dieser Benutzer möchte alle SoIndividuelle Dekorateur für Klasse basierte Ansichten in django Rest Rahmen
meines API zugreifen für die Funktion basierte Ansichten implementiert ich ein Dekorateur:
from functools import wraps
from rest_framework import status
from rest_framework.response import Response
def permit(user_type):
class Permission(object):
def __init__(self, view_func):
self.view_func = view_func
wraps(view_func)(self)
def __call__(self, request, *args, **kwargs):
if request.user.user_type in user_type:
return self.view_func(request, *args, **kwargs)
else:
return Response(status=status.HTTP_403_FORBIDDEN)
return Permission
so nehme ich an einem meiner API wollen eine Art von Benutzer zu accesed ich tun:
@permit(["A"])
def myview(request):
# return some reponse
Dies funktioniert gut, aber ich habe beunruhigend e, um dies für klassenbasierte Ansichten zu konvertieren.
Ich habe versucht, den Versand-Methode zu dekorieren:
@method_decorator(permit_only(["A",]))
def dispatch(self, request, *args, **kwargs):
return super(UserList, self).dispatch(*args, **kwargs)
Aber ich erhalte eine Fehlermeldung:
AssertionError(u'.accepted_renderer not set on Response',)