Django 表单的一些对象没有保存在数据库中?
Some objects of django forms are not saved in database?
我创建了一个自定义注册表单,之前它只要求输入用户名,password.Then我在用户注册部分添加了一些部分,例如姓名、姓氏和电子邮件。添加这些后,现在在用户注册时在数据库中注册用户名时不会发生。并且姓名和电子邮件信息也未注册。
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:
黄线是空白区域..
试试这个
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)
我创建了一个自定义注册表单,之前它只要求输入用户名,password.Then我在用户注册部分添加了一些部分,例如姓名、姓氏和电子邮件。添加这些后,现在在用户注册时在数据库中注册用户名时不会发生。并且姓名和电子邮件信息也未注册。
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: 黄线是空白区域..
试试这个
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)