I want to register a user using my own register model, but I keep getting the following error:
Duplicate key value violates unique auth_user_username_key constraint DETAIL: Key (username) = (No) already exists
How to fix this error.
This is the code I've created so far:
In urls.py, I am creating URL configurations for various pages.
from django.conf.urls import url
from django.contrib.auth.views import login
from . import views
urlpatterns = [
url(r'^$', views.nest, name = 'nest'),
url(r'^login/$', login, {'template_name' : 'Identities/login.html'}, name = 'login'),
url(r'^register/$', views.register, name = 'register'),
]
In forms.py, I create a custom registration form.
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class CreateAccountForm(UserCreationForm):
email = forms.EmailField(required = True)
class Meta:
model = User
fields = (
'first_name',
'last_name',
'email',
'password1',
'password2'
)
def save(self, commit = True):
user = super(CreateAccountForm, self).save(commit = False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
In views.py, I created a register view function.
from django.shortcuts import render, redirect
from Identities.forms import CreateAccountForm
def nest(request):
return render(request, 'Identities/nest.html')
def register(request):
if request.method == 'POST':
form = CreateAccountForm(request.POST)
if form.is_valid():
form.save()
else:
return redirect(reverse('Identities:logout'))
else:
form = CreateAccountForm()
var = {'form' : form}
return render(request, 'Identities/create_account.html', var)