У меня есть простое представление списка DRF и я хотел написать некоторые разрешения, относящиеся к POST
запросам.Это привело к ошибке при выдаче GET
запросов.Это привело меня к пониманию того, что мой класс разрешений вызывается несколько раз по запросам, которые не были отправлены.Вот мои файлы.
permissons.py:
class IsDummy(permissions.BasePermission):
def has_permission(self, request, view):
print("\n{}\n".format(request.method))
if request.method in permissions.SAFE_METHODS:
return True
return False
views.py:
class UserListView(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsDummy]
Проблема возникает только тогда, когда я отправляю запрос из своего браузера на доступный API-интерфейс.Когда я отправляю запрос GET по URL-адресу списка, я получаю следующее, напечатанное на терминале из оператора печати в классе разрешений IsDummy
:
GET
POST
POST
OPTIONS
Когда я отправляю GET
или OPTIONS
запрос через почтальона. Я вижу единственный подходящий метод запроса, который я на самом деле использовал.
Кажется, что первый из перечисленных методов - это всегда фактический метод, который я использовал, я понятия не имею, где дополнительные POST
sи OPTION
приходят из.Еще более странная часть заключается в том, что после всего этого страница будет нормально загружаться, даже если запросы POST
явно приведут к IsDummy.has_permission
, возвращающему False
.
Инструменты разработчика Chrome показывают только одинGET
запрос отправлен, и, поскольку он только кажется, что он просматривается в API для просмотра, я уверен, что это как-то связано с этим, но я не могу понять, что я испортил, чтобы это произошло.