Невозможно отправить форму регистрации в django

введите описание изображения здесь при нажатии кнопки зарегистрировать, данные не сохраняются в базе данных и страница не перенаправляется на индексную страницу.

views.py

from django.shortcuts import render,redirect
from django.views.generic import View
from Angram.forms import RegistrationForm

# Create your views here.

class IndexView(View):
    def get(self,request,*args,**kwargs):
        return render(request,"index.html")

class RegistrationView(View):
    def get(self,request,*args,**kwargs):
        form=RegistrationForm()
        return render(request,"register.html",{"form":form})

    def post(self,request,*args,**kwargs):
        form=RegistrationForm(request.POST)
        if form.is_valid():
            User.objects.create_user(**form.cleaned_data)
            return redirect("index-main")
        else:
            return render(request,"register.html",{"form":form})

forms.py

from django import forms
from django.contrib.auth.models import User

class RegistrationForm(forms.ModelForm):
    class Meta:
        model=User
        fields=["first_name","last_name","username","email","password"]

urls.py

from django.contrib import admin
from django.urls import path
from Angram import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path("index/",views.IndexView.as_view(),name="index-main"),
    path("accounts/register/",views.RegistrationView.as_view(),name="signup"),
]

В представлении регистрации вы выводите шаблон в операторе else.

Вместо этого:

def post(self,request,*args,**kwargs):
        form=RegistrationForm(request.POST)
        if form.is_valid(): #here you have not saved the form
            User.objects.create_user(**form.cleaned_data)
            return redirect("index-main")
        else: #here you are rendering template in else statement. you must render this template outside the if statement not inside if statement
            return render(request,"register.html",{"form":form})

Сделайте следующее:

def post(self,request,*args,**kwargs):
        form=RegistrationForm(request.POST)
        if form.is_valid():
            User.objects.create_user(**form.cleaned_data)
            form.save() #here i saved the form
            return redirect("index-main")
        return render(request,"register.html",{"form":form})
Вернуться на верх