Разрешения для объектов с доступом только для чтения для анонимных пользователей в 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) 
  • Django REST Framework - Сериализация необязательных полей
  • AttributeError с Django REST Framework и MongoEngine
  • Значение внешнего ключа в Django REST Framework
  • django-rest-framework, универсальное наследование модели, ModelSerializers и вложенные сериализаторы
  • Django DRF с oAuth2 с использованием DOT (django-oauth-toolkit)
  • django-rest-framework: как мне сериализовать поле, которое уже содержит JSON?
  • Можете ли вы оптимизировать этот код? (Django, python)
  • неверный литерал для int () с базой 10 в представлении listAPI django rest framework
  • Python - лучший язык программирования в мире.