Я хочу создать пользователя в django, но метод create_user() не работает
Я пытаюсь создать пользователя с помощью метода create_user, но он не работает и не выдает никаких ошибок
в моем views.py
у меня есть следующий код
from django.contrib.auth.models import User
from django.views import View
from django.shortcuts import render, redirect
from django.contrib import messages
class Signup(View):
def get(self, request):
return render(request, 'myqpp/signup.html')
def post(self, request):
username=request.POST.get('username')
pas = request.POST.get('password')
email = request.POST.get("email")
user = User.objects.create_user(username, email, pas)
user.save()
return redirect('/signin/')
class Signin(View):
def get(self, request):
return render(request, 'myapp/signin.html')
def post(self, request):
username = request.POST.get('username')
pas = request.POST.get('password')
user = authenticate(username=username, password=pas)
if user is not None:
login(request, user)
print('Success')
return redirect('/', context={"user":user})
else:
print('Failed')
messages.error(request, 'Bad Credentials')
return redirect('/signin/')
Я всегда получаю сообщение "Bad credentials", и когда я просматриваю таблицу Users на странице django admin/
, она показывает, что новый пользователь не добавлен.
Когда я нажимаю кнопку отправки на странице регистрации, консольный журнал выглядит следующим образом
[21/Aug/2022 15:31:50] "GET /signup/ HTTP/1.1" 200 3907
Failed
[21/Aug/2022 15:32:07] "POST /signin/ HTTP/1.1" 302 0
[21/Aug/2022 15:32:07] "GET /signin/ HTTP/1.1" 200 3304
Я не знаю, в чем проблема, поскольку он не показывает никаких ошибок
Это myqpp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.MainView.as_view(), name='home'),
path('signup/', views.Signup.as_view(), name='signup'),
path('signin/', views.Signin.as_view(), name='signin'),
path('signout/', views.Signout.as_view(), name='signout'),
]
Похоже, у вас неправильный путь в атрибуте action
в теге <form>
.
[21/Aug/2022 15:31:50] "GET /signup/ HTTP/1.1" 200 3907
Failed
При отправке формы регистрации необходимо вызвать с помощью POST страницу регистрации, а не входа (это видно по тексту 'Failed' в консоли).
Для создания поля необходимо использовать creat, а не creat_user! И вы должны указать имя каждого аргумента. Например, так:
user = User.objects.create(username=username, email=email, password=pas)