Я посмотрел на заданные вопросы, но не могу понять, что мне не хватает. Когда я пытаюсь проверить свою страницу регистрации, она выбрасывает ограничение UNIQUE. Я знаю, что это имеет некоторое отношение к form.save () в моих представлениях. В другом решении вопросов говорилось, что они пытались сохранить форму дважды. Я уверен, что не делаю этого, но я могу ошибаться.
Views.py
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import UserRegisterForm, bUserRegisterForm, UserProfileForm
from django.contrib.auth import authenticate, login, logout
def studentreg(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form .is_valid():
form.save()
first_name = form.cleaned_data.get('first_name')
messages.success(request, f'account created for {first_name}!')
return redirect ('/home/studentlogin.html')
else:
form = UserRegisterForm() #this will return an empty form
return render(request, 'users/studentregisterform.html', {'form': form})
def getstarted(request):
return render(request, 'home/getstarted.html')
def chooseaccount(request):
return render(request, 'home/chooseaccount.html')
def businessreg(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
profile_form = UserProfileForm(request.POST)
if form .is_valid () and profile_form.is_valid():
user = form.save()
profile = profile_form.save(commit=False)
profile.user = user
profile.save()
first_name = form.cleaned_data.get('first_name')
messages.success(request, f'account created for {first_name}!')
return redirect ('admin/')
else:
form = bUserRegisterForm()
profile_form = UserProfileForm()
return render(request, 'users/businessregisterform.html', {'form': form, 'profile_form' : profile_form})
def bloginpage(request):
if request.method == 'POST':
Email_Address = request.POST.get('Email_Address')
password = request.POST.get('Password')
user = authenticate(request, Email_Address = email, Password = password)
if user is not None:
login(request, Email_Address)
return redirect('')
context = {}
return render(request, 'home/studentlogin.html', context)
Models.py
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
company_name = models.CharField(max_length=50)
def __str__(self):
return self.user.email
forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import UserProfile
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['email', 'first_name', 'last_name', 'password1', 'password2']
class bUserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['email', 'first_name', 'last_name', 'password1', 'password2']
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('company_name',)
Любая помощь будет оценена. Я все еще учусь и хотел бы понять, что я делаю неправильно, поэтому я буду лучше понимать вещи в будущем