Пользовательские разрешения в Django
В Django Rest framework мы можем проверять разрешения, такие как (isAuthenticated, isAdminUser...) но как мы можем добавить наши собственные разрешения и решить, что django может делать с этими разрешениями?
Я очень хочу понять, что происходит за этим (я не нашел документации, которая объясняет это):
@permission_classes([IsAdminUser])
Спасибо
Если вы используете VSCode, наведите курсор на @permission_classes([IsAdminUser])
, нажмите на Command (на клавиатуре).
Вы можете посмотреть, что происходит за кулисами, поиграть и создать свою собственную версию 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):
Это просто набор представлений для примера, вы можете использовать общие наборы представлений или то, что вы хотите.