Self.action is None в DRF
self.action
является None
в get_permissions()
методе.
Когда вызывается несуществующий url, DRF не выбрасывает ошибку 404. Поэтому каким-то образом действие None
в get_permissions()
method.
Вот ModelViewSet
:
class UserViewSet(ModelViewSet):
serializer_classes = {
"list": UserSerializer,
"retrieve": UserSerializer,
"create": UserSerializer,
"update": UserUpdateSerializer,
}
http_method_names = ["get", "post", "put"]
def get_serializer_class(self):
return self.serializer_classes[self.action]
def get_permissions(self):
if self.action is None:
# here error raises when i call '.../accounts/blablabla/` endpoint in post request instead of 404?
raise AssertionError("self.action cannot be None")
if self.action in ["list", "retrieve"]:
return [IsAuthenticated(), IsAdmin()]
else:
return [AllowAny()]
Вот моя ссылка на обсуждение #8199 на github.