Создать нового пользователя с помощью веб-токена JSON Django Rest Framework

Я использую структуру Django REST с Simple JWT. Я пытаюсь создать страницу регистрации пользователя. В настоящее время я получаю эту ошибку

Запрещено (403) Ошибка проверки CSRF. Запрос прерван.

Причина сбоя: токен CSRF отсутствует или неверен.

Полное сообщение об ошибке здесь:

В settings.py я добавил это:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES' : ('rest_framework.permissions.IsAuthenticated',),
'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_simplejwt.authentication.JWTAuthentication',),

}

Папка с URL-адресами моего проекта:

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", include("my_api.urls")),
    path('api-auth/', include('rest_framework.urls')),
    path('api/token', TokenObtainPairView.as_view()),
    path('api/token/refresh', TokenRefreshView.as_view()),
]

И это вид моего приложения для моей конечной точки регистрации.

def register(request):
    if request.method == "POST":
        email = request.POST["email"]

        # Ensure password matches confirmation
        password = request.POST["password"]
        confirmation = request.POST["confirmation"]
        if password != confirmation:
            return render(request, "my_api/register.html", {
                "message": "Passwords must match."
            })

        # Attempt to create new user
        try:
            # Creates a hashed password. 
            #password = make_password(password)
            user = User.objects.create_user(username=email, email=email, password=password)
            user.save()
        except IntegrityError as e:
            print(e)
            return render(request, "my_api/register.html", {
                "message": "Email address already taken."
            })
        login(request, user)
        return HttpResponse("Successfully created account.")
    else:
        return render(request, "my_api/register.html")

1 ответ

Что вызывает ошибку в случае меня, так это то, что я пытался получить пользователя с помощью http://localhost:8000/jwt/create в то время как мои конечные точки начинались с auth/ так и должно быть http://localhost:8000/auth/jwt/create или в вашем случае это должно быть

      http://localhost:8000api/token/jwt/create

Я написал это, думая, что у другого пользователя может быть такая же проблема.

Другие вопросы по тегам