Не установлен маркер 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 запросы работают нормально.
Что здесь кажется проблемой?