Не могу решить эту ошибку: UNIQUE constraint failed: auth_user.username
Я искал решение вдоль и поперек, но, похоже, не нашел его. У меня есть форма для регистрации пользователей на платформе eLearning, функция входа работает нормально, но при регистрации возвращается сообщение об ошибке. Вот мой forms.py
файл:
from django import forms
from .models import Contact as con, Subscription as subs
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
# registration form
class register(UserCreationForm):
# create User form
FirstName = forms.CharField(max_length=30, required=True)
LastName = forms.CharField(max_length=30, required=True)
UserName = forms.CharField(max_length=30, required=True)
Email = forms.CharField(max_length=255, required=True)
class Meta:
model = User
fields = [
"FirstName",
"LastName",
"UserName",
"Email",
"password1",
"password2",
]
и это мой views.py
файл:
def logout_user(req):
# log the user out
logout(req)
return redirect("Home")
def dash(req):
if req.method == "POST":
# if the user is signing up
if "signup" in req.POST:
form = register(req.POST)
print(form)
if form.is_valid():
# save
form.save()
# get the username and password
username = form.cleaned_data.get("UserName")
password = form.cleaned_data.get("password1")
# authenticate and log the user in
user = authenticate(username=username, password=password)
login(req, user)
# drop a success message
messages.success(req, "You have successfully signed up!")
# render back the page
return render(req, "dashboard.html")
else:
fname = req.POST["FirstName"]
lname = req.POST["FirstName"]
email = req.POST["Email"]
# get the errors
errors = form.errors.as_data()
err_list = []
for err in errors:
err_list.append(f"{err}: {errors[err][0].message}")
print(err_list)
# pass it to the page
return render(
req,
"login.html",
{
"err": err_list,
"fname": fname,
"lname": lname,
"email": email,
},
)
Я проверил, не создаю ли я одного и того же пользователя дважды, а также убедился, что новый пользователь не существует, затем я пошел дальше, чтобы отладить свой код, я распечатал форму в терминале, и все подтвердилось. Вот форма, распечатанная в терминале:
<div>
<label for="id_FirstName">Firstname:</label>
<div class="helptext" id="id_FirstName_helptext">Enter first name</div>
<input type="text" name="FirstName" value="Abdulqadir" maxlength="30" required aria-describedby="id_FirstName_helptext" id="id_FirstName">
</div>
<div>
<label for="id_LastName">Lastname:</label>
<div class="helptext" id="id_LastName_helptext">Enter your last name</div>
<input type="text" name="LastName" value="Mahood" maxlength="30" required aria-describedby="id_LastName_helptext" id="id_LastName">
</div>
<div>
<label for="id_UserName">Username:</label>
<div class="helptext" id="id_UserName_helptext">Pick a User name</div>
<input type="text" name="UserName" value="abdulqadir" maxlength="30" required aria-describedby="id_UserName_helptext" id="id_UserName">
</div>
<div>
<label for="id_Email">Email:</label>
<input type="text" name="Email" value="abdulqadirbimuslim@gmail.com" maxlength="255" required
id="id_Email">
</div>
<div>
<label for="id_password1">Password:</label>
<div class="helptext" id="id_password1_helptext"><ul><li>Your password can’t be too similar to your other personal information.</li><li>Your password must contain at least 8 characters.</li><li>Your password can’t be a commonly used password.</li><li>Your password can’t be entirely numeric.</li></ul></div>
<input type="password" name="password1" autocomplete="new-password" required aria-describedby="id_password1_helptext" id="id_password1">
</div>
<div>
<label for="id_password2">Password confirmation:</label>
<div class="helptext" id="id_password2_helptext">Enter the same password as before, for verification.</div>
<input type="password" name="password2" autocomplete="new-password" required aria-describedby="id_password2_helptext" id="id_password2">
Я попробовал закомментировать form.save()
и тогда я понял ошибку, всякий раз, когда я закомментировал этот код, функция регистрации работает, и я получаю вход в панель, но новый пользователь не сохраняется на сайте администратора. Когда я проверил сайт администратора, я увидел, что сохраняются пустые данные с сообщением "Вы успешно зарегистрировались!", и когда я попытался войти в систему, конечно, это не сработало. Может ли кто-нибудь помочь мне с этой проблемой :(