Django: ошибка целостности при регистрации для создания нового пользователя с пользовательской формой - PullRequest
0 голосов
/ 12 ноября 2019

Я создал пользовательские формы для входа и регистрации в Django, используя HTML / CSS, а не Django's form.as_p. У меня есть следующий код в views.py:

def login_user(request):
logout(request)
if request.POST:
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        login(request, user)
        return redirect('/mainpage/')
    else:
        login_message = "Your username or password is incorrect."
        return render(request, 'index.html', {'login_message': login_message})
return render(request, 'index.html')

def sign_up(request):
    if request.POST:
        username = request.POST['username']
        email = request.POST['email']
        password = request.POST['password']
        password_confirm = request.POST['password-confirm']
        if(valid_form(username, email, password, password_confirm)):
            #create the new user
            user = CustomUser(name=username, email=email, password=password)
            user.save()
            user = authenticate(username=username, password=password)
            login(request, user)
            return redirect('/mainpage/')
        else:
            message = "There was a problem."
            return render(request, 'index.html', {'message': message})
    return render(request, 'index.html')

У меня есть следующая модель для CustomUser в models.py:

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200, null=True)
email = models.EmailField(max_length=70, null=True)
password = models.CharField(max_length=50, null=True)

Мой код работает для регистрации, и яМожно создать нового пользователя после ввода имени пользователя, адреса электронной почты и пароля. Однако, когда я пытаюсь зарегистрироваться снова и создать другого пользователя, я получаю следующую ошибку:

Exception Type: IntegrityError
Exception Value: UNIQUE constraint failed: Reviews_customuser.username

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

Ответы [ 2 ]

1 голос
/ 12 ноября 2019

У меня недостаточно репутации, чтобы комментировать, поэтому я отвечаю.

Почему у вас null=True в вашем name = models.CharField(max_length=200, null=True)?

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

0 голосов
/ 12 ноября 2019
You are extending your customuser class with 'AbstractUser' class. In this scenario, you can add columns to the auth_user table in the database.

If you want to create all the new columns for your 'auth_user' table. you can extends your customuser class with 'AbstractBaseUser' class.

"Exception Value: UNIQUE constraint failed: Reviews_customuser.username". You are getting this error because you trying to create the same user again
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...