Создать нового пользователя с помощью веб-токена 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
Я написал это, думая, что у другого пользователя может быть такая же проблема.