Почему мои формы не действительны (как forms.Form, так и ModelForm), и почему он не сохраняет данные в базу данных?

views.py

мое представление содержит две формы, userform, которую я создал с помощью forms.Form и snippetform, которую я создал с помощью ModelForm. создал с помощью ModelForm.

from django.shortcuts import render
from .forms import Snippetform, Userform
from .models import User, Snippet
from django import forms 

# Create your views here.

def user(request):
    form = Userform()
    if request.method == "POST":
        form = Userform(request.POST)
        if form.is_valid():
            username = form.cleaned_data["username"]
            fname = form.cleaned_data["fname"]
            lname = form.cleaned_data["lname"]
            email = form.cleaned_data["email"]
            password = form.cleaned_data["password"]
            password2 = form.cleaned_data["password2"]

            new_user = User.objects.create(username,fname,lname,email,password,password2)
            new_user.save()

    return render(request,'my_app/user.html',{'form':form})


def snippet(request):
    form = Snippetform()
    if request.method == "POST":
        form = Snippetform(request.POST)
        if form.is_valid():
            form.save()
        else:
            print(form.errors.as_data())



    return render(request,'my_app/snippet.html',{'form':form})



def thanks(request):

    return render(request,'my_app/thanks.html',)

forms.py

from django import forms 
from . models import Snippet

class Userform(forms.Form):
    username = forms.CharField()
    fname = forms.CharField(label="First name")
    lname = forms.CharField(label="Last name")
    email = forms.EmailField(label="E-mail")
    password = forms.IntegerField(required=False)
    password2 = forms.IntegerField(label="Confirm password",required=False)

class Snippetform(forms.ModelForm):

    class Meta:
        model = Snippet
        fields = ("name","body")

models.py

from django.db import models

# Create your models here.

class User(models.Model):
    username = models.CharField(max_length=100)
    fname = models.CharField(max_length=100)
    lname = models.CharField(max_length=100)
    email = models.EmailField(max_length=30)
    password = models.IntegerField()
    password2 = models.IntegerField()

class Snippet(models.Model):
    name = models.CharField(max_length=50)
    body = models.TextField(max_length=150)

urls.py

from  django.urls import path
from . import views 

#registered namespace for my app name which is "my_app"
app_name = 'my_app'


urlpatterns = [
    path('user/',views.user,name='user'),
    path('snippet/',views.snippet,name='snippet'),
    path('thanks/',views.thanks,name='thanks'),
]

snippet.html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<h1>Welcome to Snippet view!!</h1>

<form action="{% url 'my_app:thanks' %}" method="POST">
{% csrf_token %}
{{form}}
<button type="submit">Submit</button>

</form>

   </body>
</html>

user.html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<h1>Welcome to the User view!</h1>

<form action="{% url 'my_app:thanks' %}" method="POST">
    {% csrf_token %}
    {{form}}
    <button type="submit">Submit</button>

    </form>

   </body>
</html>

thank.html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<h1>Welcome to the Thank you view!</h1>

<h1>Thank you for filling this form</h1>

   </body>
</html>

admin.py

# Я даже зарегистрировал свои модели в admin.py, чтобы просмотреть объекты данных оттуда, но он не сохраняет никаких данных, и я также проверил в shell тоже, но он не сохраняет никаких данных.

from django.contrib import admin
from.models import User,Snippet
# Register your models here.

admin.site.register(User)
admin.site.register(Snippet)
Вернуться на верх