ModelViewSet не перезаписывает КЛАССЫ DEFAULT_PERMISSION_CLASSES по УМОЛЧАНИЮ'
Здравствуйте, я работаю над тем, чтобы все URL-адреса требовали аутентификации пользователя, но некоторые URL-адреса я хочу, чтобы они были общедоступными, поэтому я использую permission_classes = [AllowAny] и authentication_classes = ([]) для перезаписи конфигураций по умолчанию, это работает в APIVIEW, но не в viewsets.ModelViewSet почему?
settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
'DEFAULT_FILTER_BACKENDS': [
'django_filters.rest_framework.DjangoFilterBackend',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
'DATETIME_FORMAT': "%Y-%m-%d %H:%M:%S",
}
views.py
class ToolsListViewSet(viewsets.ModelViewSet):
serializer_class = ToolsListSerializer
permission_classes = [AllowAny]
authentication_classes = ([])
pagination_class = None
def get_queryset(self):
return Tools.objects.filter(is_active=True)
enter code here
ошибка
{
"detail": "Authentication credentials were not provided."
}
Я проверил ваш код, но не могу найти никаких проблем.
Вот наследование классов в Django.
ModelViewSet <- GenericViewSet <- GenericAPIView <- APIView
Таким образом, если это работает с APIView, то должно работать и с ModelViewSet.
Можете ли вы попытаться принудительно ввести разрешение, переопределив get_permissions в вашем наборе представлений (возможно, вы также можете указать AllowAny для определенных действий)?
def get_permissions(self):
return [AllowAny()]