Drf представление на основе классов как управлять вызовами методов

Я работал над FBV в Django и теперь пробую CBV. Я создал базовое грубое приложение

Views.py

class UserViews(APIView):
permission_classes = [IsViewOnly | IsManager | IsAdmin | IsStaff]

def get_objects(self, user_id):
    #query
def post(self, request):        
    #create code
def get(self, request):
    #details code
def put(self, request):
    #update code
def delete(self):
    #code

urls.py

urlpatterns = [
path('add-user/', views.UserViews.as_view(), name="create-user"),
path('update-user/', views.UserViews.as_view(), name="update-user"),
path('delete-user/', views.UserViews.as_view(), name="delete-user"),
path('list-users', views.UserSearchList.as_view(), name="list-user"),
path('view-user', views.UserViews.as_view(), name="view-user"),]

Этот код работает, но как предотвратить ситуацию, когда, скажем, менеджер хочет использовать API для просмотра данных пользователя, но выполняет его с методом delete, и пользователь теперь удален

Вы можете использовать декоратор @api_view с представлениями на основе функций, чтобы установить определенное разрешение на конкретный метод в классе APIView.

@permission_classes([IsManager, ])
def delete(self, request):
    # your code.

Примечание: когда вы устанавливаете новые классы разрешений через атрибут class или декораторы, вы говорите представлению игнорировать список по умолчанию, установленный в файле settings.py. ссылка: Django установка политики разрешений

Вернуться на верх