Разрешения для объектов с доступом только для чтения для анонимных пользователей в Django Rest Framework

Проблема

Я использую Django REST Framework – и до сих пор я использовал DjangoObjectPermissions разрешений DjangoObjectPermissions . Я использую django-rules чтобы определить, какие пользователи имеют разрешения для объектов.

Тем не менее, этот класс разрешений, по-видимому, запрещает доступ для чтения анонимным пользователям.

Мне нужно найти лучший способ разрешить доступ только для чтения всем пользователям (аутентифицированным или нет). Для дополнений, модификаций и удалений – права на объекты должны применяться как обычно.

Каков наилучший подход к решению этой проблемы? По умолчанию Django не предоставляет разрешение can_view .

Возможно, это потребует вручную добавления разрешения can_view для каждой модели. Или, может быть, лучше каким-то образом реализовать DjangoObjectPermissionsOrAnonReadOnly разрешений DjangoObjectPermissionsOrAnonReadOnly ?

2 Solutions collect form web for “Разрешения для объектов с доступом только для чтения для анонимных пользователей в Django Rest Framework”

Исправление было действительно простым. Можно создать собственный класс разрешений, расширяющий DjangoObjectPermissions , и переопределить переменную authenticated_users_only .

 class DjangoObjectPermissionsOrAnonReadOnly(DjangoObjectPermissions): authenticated_users_only = False 
 from rest_framework import permissions 

и просто дайте

  permission_classes = [permissions.IsAuthenticatedOrReadOnly, YourPermissionshere, ] 

в вашем представлении. Это сделает работу. если они не аутентифицированы, анонимные пользователи получат разрешение только для чтения

вы можете управлять, когда разрешения проверяются и не проверяются путем обработки функции

 self.check_object_permissions(self.request, obj) 
  • Все поля в ModelSerializer django rest framework
  • OperationalError, нет такого столбца. Джанго
  • Добавить немодельное поле на ModelSerializer в DRF 3
  • Передайте дополнительные аргументы классу Serializer в Django Rest Framework
  • Django DateTimeField TypeError: ожидаемая строка или байтоподобный объект
  • Удалить нулевые поля из ответа Django Rest Framework
  • Как установить pydes на Ubuntu?
  • Как входить в систему с помощью электронной почты и выходить из системы с помощью Django Rest Framework JSON web tokens?
  • django сортирует элементы запроса еженедельно ежемесячно ежедневно
  • Наследовать родительский класс docstring как атрибут __doc__
  • Как показать параметры параметров запроса в Django REST Framework - Swagger
  • Python - лучший язык программирования в мире.