Ответы Mail.ru: Почему не работает permission? python django

Блок кода, который вы предоставили, содержит ошибку в определении класса разрешений Django. Скорее всего, ошибка связана с неправильным отступом или отсутствием двоеточия после return.

Вот исправленный код:

 class IsAdminOrReadOnly(permissions.BasePermission): 
    '''Права на создание и удаление произведений, категорий и жанров''' 
 
    def has_permission(self, request, view): 
        # breakpoint() 
        if request.method in permissions.SAFE_METHODS: 
            return True 
        if request.user.is_authenticated: 
            return ( 
                request.user.is_superuser 
                or request.user.is_staff 
            )  

Убедитесь, что вы правильно отступили код и добавили двоеточие после return. Кроме того, убедитесь, что вы правильно импортировали класс BasePermission из модуля django.contrib.auth.permissions.

После исправления кода класс разрешений должен работать правильно. Он будет разрешать доступ к представлению только пользователям с правами суперпользователя или администратора, а также разрешать доступ только для чтения пользователям, которые не вошли в систему.