Не установлен маркер CSRF: Причина и решение

Я использую шаблон Cookiecutter Django. Я сделал пользовательскую модель пользователя, расширяющуюся от AbstractUser. В пользовательском приложении я сделал представление для списка и регистрации новых пользователей и использовал rest_framework_simplejwt.views.TokenObtainPairView.

views.py

class UsersListCreateAPIView(ListCreateAPIView):
      queryset = User.objects.all()
      serializer_class = UserSerializer
      permission_classes = [AllowAny]
      filter_backends = [DjangoFilterBackend, SearchFilter]
      search_fields = ["name"]

settings/base.py

    MIDDLEWARE = [
        "django.middleware.security.SecurityMiddleware",
        "corsheaders.middleware.CorsMiddleware",
        "whitenoise.middleware.WhiteNoiseMiddleware",
        "django.contrib.sessions.middleware.SessionMiddleware",
        "django.middleware.locale.LocaleMiddleware",
        "django.middleware.common.CommonMiddleware",
        "django.middleware.csrf.CsrfViewMiddleware",
        "django.contrib.auth.middleware.AuthenticationMiddleware",
        "django.contrib.messages.middleware.MessageMiddleware",
        "django.middleware.common.BrokenLinkEmailsMiddleware",
        "django.middleware.clickjacking.XFrameOptionsMiddleware",
    ]

CSRF_COOKIE_SECURE = False

urls.py

app_name = "users"
urlpatterns = [
    path("", UsersListCreateAPIView.as_view(), name="users"),
    path("token", TokenObtainPairView.as_view(), name="log in"),
]

Теперь при попытке залогинить пользователя через Post запрос к "/api/users/token/" я получаю CSRF token not set. Я попробовал поменять местами представления с конечными точками, т.е.

отредактировал urls.py

app_name = "users"
urlpatterns = [
    # path("", UsersListCreateAPIView.as_view(), name="users"),
    # path("token", TokenObtainPairView.as_view(), name="log in"),
    path("", view=TokenObtainPairView.as_view(), name="users"),
    path("token", UsersListCreateAPIView.as_view(), name="log in"),

теперь логин работает на "api/users/", но пост запрос "api/users/token/" возвращает CSRF token not set. В основном, любой Post запрос от "api/users/anypathname" возвращает 403. get запросы работают нормально.

Что здесь кажется проблемой?

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