【问题标题】:Some objects of django forms are not saved in database?django表单的某些对象没有保存在数据库中?
【发布时间】:2022-01-11 01:43:01
【问题描述】:

我创建了一个自定义注册表单,以前它只要求输入用户名和密码。然后我在用户注册部分添加了一些部分,如姓名、姓氏和电子邮件。添加这些之后,现在在用户注册期间在数据库中注册用户名时不会发生这种情况。并且姓名和电子邮件信息也未注册。

models.py

from django.db import models

class Register(models.Model):
    first_name = models.CharField(max_length=50,verbose_name="First Name")
    last_name = models.CharField(max_length=50,verbose_name="Last Name")
    username = models.CharField(max_length=50,verbose_name="Username")
    email = models.EmailField(verbose_name="Email")
    password = models.CharField(max_length=50,verbose_name="Password")
    confirm = models.CharField(max_length=50,verbose_name="Confirm Password")

    def __str__(self):
        return self.title

forms.py

   from django import forms
   from.models import Register

class LoginForm(forms.Form):
    username = forms.CharField(label="Username")
    password = forms.CharField(label="Password",widget=forms.PasswordInput)


class RegisterForm(forms.ModelForm):
    class Meta:
        model = Register
        widgets = {
        'password': forms.PasswordInput(),
        'confirm': forms.PasswordInput(),

    }
        fields = ["first_name","last_name","username","email","password","confirm"]

views.py

from django.contrib.auth.backends import UserModel
from django.shortcuts import render,redirect
from .forms import LoginForm, RegisterForm
from django.contrib.auth.models import User
from django.contrib.auth import login,authenticate,logout
from django.contrib import messages
from django.contrib.auth.decorators import login_required

# Create your views here.


def register(request):
    
    form = RegisterForm(request.POST or None)
    if form.is_valid():
            
            password = form.cleaned_data.get('password')
            username = form.cleaned_data.get('username')
            last_name = form.cleaned_data.get('last_name')
            email = form.cleaned_data.get('email')
            first_name = form.cleaned_data.get('first_name')
            
            
            newUser = User(username = username)
            newUser = User(first_name = first_name)
            newUser = User(email = email)
            newUser = User(last_name = last_name)
            newUser.set_password(password)

            newUser.save()

            login(request,newUser)
            messages.success(request,"Register successfully!")

            return redirect("index")
        
    context = {
        "form" : form
        }
    return render(request,"register.html",context)


def loginUser(request):
    form = LoginForm(request.POST or None)
    context = {
        "form" : form
    }

    if form.is_valid():
        username = form.cleaned_data.get('username')
        password = form.cleaned_data.get('password')
        
        user = authenticate(username = username, password = password)

        if user is None : 
            messages.info(request,"Username or password is wrong!")
            return render (request,"login.html",context)
        
        messages.success(request,"Login Successfully")
        login(request,user)
        return redirect("index")
    
    return render(request,"login.html",context)

def logoutUser(request):
    logout(request)
    messages.success(request,"Successfully logged out")
    return redirect("index")

@login_required(login_url="user:login")
def profileUser(request):
   return render(request,"profile.html")

我的注册表如下: Registration form picture :

只需注册: During register picture

注册后数据库中没有用户名,电子邮件,名字。数据库中只有密码和姓氏信息。

After Registration Database is looking like picture: 黄线是空白区域..

【问题讨论】:

    标签: python django django-models django-views django-forms


    【解决方案1】:

    试试这个

    def register(request):
        
        form = RegisterForm(request.POST or None)
        if form.is_valid():
                
                password = form.cleaned_data.get('password')
                username = form.cleaned_data.get('username')
                last_name = form.cleaned_data.get('last_name')
                email = form.cleaned_data.get('email')
                first_name = form.cleaned_data.get('first_name')
                
                
                newUser = User(username = username,last_name = last_name,first_name = first_name,email = email)
                newUser.set_password(password)
    
                newUser.save()
    
                login(request,newUser)
                messages.success(request,"Register successfully!")
    
                return redirect("index")
            
        context = {
            "form" : form
            }
        return render(request,"register.html",context)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 2021-05-03
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      相关资源
      最近更新 更多