Я не могу создать нового пользователя в django

Я не могу создать нового пользователя этим методом перенаправление работает и все работает, но новый пользователь не создается
. это мой взгляд

from urllib import response
from django.shortcuts import redirect, render
from .forms import RegisterForm


from main.views import home
# Create your views here.
def register(request):
    form = RegisterForm(request.POST or None)
    if request.method == "POST":
        
        if form.is_valid():
            form.save()
            return redirect("home")

        else:
            form = RegisterForm()
            
    return render(request, "register.html", {"forms":form})

Forms.py

from dataclasses import field
from socket import fromshare
from xml.parsers.expat import model
from django.contrib.auth import login, authenticate
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User

class RegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ["username","email","password1","password2"]

Я сделал это без crispy, потому что я не работал с ним. Я также удалил файл base.html из шаблона, потому что у меня нет к нему доступа. Мои пользователи сохранены. Я думаю, что проблема в этой строке:

else:
            form = RegisterForm()

Если тип запроса POST, то пользователь отправил данные. Если пришел запрос типа GET, то мы создаем пустую форму, после чего следует render (форма показывается в первый раз):

else:
        form = RegisterForm()
        return render(request, "bboard/register.html", {"form": form})

Также обратите внимание, что

form = RegisterForm(request.POST or None)

чек запрашивается после:

if request.method == "POST":

В строке return render(request, "bboard/register.html", {"form": form}) замените bboard на название папки, в которой у вас лежат шаблоны. У меня они находятся в папке templates, в которой папка bboard содержит шаблоны.

views.py

def register(request):
    if request.method == "POST":
        form = RegisterForm(request.POST or None)
        if form.is_valid():
            form.save()
            return redirect("register")
        else:
            return HttpResponse("Invalid data")
    else:
        form = RegisterForm()
        return render(request, "bboard/register.html", {"form": form})

templates

<h1>Register</h1>
<form method="post">
      {% csrf_token %}
      {{ form.as_p }}
      <input type="submit" value="adding">
</form>

urls.py

urlpatterns = [  
path('register/', register, name='register'),
]
Вернуться на верх