Пользовательские разрешения в Django

В Django Rest framework мы можем проверять разрешения, такие как (isAuthenticated, isAdminUser...) но как мы можем добавить наши собственные разрешения и решить, что django может делать с этими разрешениями?

Я очень хочу понять, что происходит за этим (я не нашел документации, которая объясняет это):

@permission_classes([IsAdminUser])

Спасибо

Если вы используете VSCode, наведите курсор на @permission_classes([IsAdminUser]), нажмите на Command (на клавиатуре).

enter image description here

Вы можете посмотреть, что происходит за кулисами, поиграть и создать свою собственную версию Django (не рекомендуется), или вы можете переписать функцию.

Напишите собственные разрешения, например, так:

def permission_valid_token(func):
    # first arg is the viewset, second is the request
    def wrapper(*args, **kwargs):
        valid_token, user_token = test_token_authorization(args[1].headers)
        if not valid_token:
            return Response(status=status.HTTP_401_UNAUTHORIZED)
        return func(*args, **kwargs)
    return wrapper

Это разрешение, которое я использую в приложении, возможно, у вас будет часть valid_token

И их вы импортируете в свои представления

from file_that_you_use.permissions import permission_valid_token

И вы используете в качестве декоратора

class WeatherViewSet(viewsets.ViewSet):
    @permission_valid_token
    def list(self, request):

Это просто набор представлений для примера, вы можете использовать общие наборы представлений или то, что вы хотите.

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