一般前端html页面中,通过form表单提交数据,后台接收数据,进行处理。对这些数据处理,后台比较麻烦。不但要判断数据格式是否正确,例如是否是邮箱;而且经常要进行数据转换,因为提交的数据是字符串的,后台需要的数据有些是数字,有些是其他类型。这些表单操作比较繁琐,因此Django设计了一个Form类来描述html表单,帮助或简化操作,form类主要有2个作用:
(1)可自动生成html代码,即input标签字段
(2)接收和处理用户提交的数据,可检查提交的数据,可将数据转换成python的数据类型
1 在应用目录下创建forms.py文件
2 根据表单字段创建Form类
from django import forms
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField()
3 在templates目录下创建myApp目录,新建login.html, index.html
创建URL路径login index
4 在视图中创建login视图,通过form类实例化一个对象,传递到模板,生成form表单input字段
5 启动服务器
python manage.py runserver
6 修改标签名
7 创建用户表
生成迁移
python manage.py makemigrations
python manage.py migrate
创建用户
7 利用Form类后台登录验证
from django.shortcuts import render,redirect
from django.http import HttpResponse
from .forms import LoginForm
from . import models
# Create your views here.
def index(request):
return render(request,'myApp/index.html')
def login(request):
if request.method == "POST":
login_form = LoginForm(request.POST)
if login_form.is_valid():
username = login_form.cleaned_data['username']
password = login_form.cleaned_data['password']
try:
user = models.User.objects.get(name=username)
if user.password == password:
return redirect('/index/')
else:
message = "密码不正确!"
except:
message = "用户不存在!"
return render(request, 'myApp/login.html', locals())
else:
login_form = LoginForm()
context = {}
context['login_form']=login_form
return render(request,'myApp/login.html',context)
运行服务器,用户名不存在时,页面提示
用户名存在时,页面跳转