Django之Form组件
Posted 黄土地上的黑石头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django之Form组件相关的知识,希望对你有一定的参考价值。
最简单的应用及理解
from django.shortcuts import render,redirect,HttpResponse from django.forms import Form from django.forms import fields # Create your views here. class LoginForm(Form): #必须继承Form #fields里面有一大堆正则表达式 # email=fields.EmailField() # ip=fields.GenericIPAddressField() # num=fields.IntegerField() username=fields.CharField( max_length=18, min_length=6, required=True, #不能为空 error_messages={ #默认错误信息是英文的,这里可以自定制中文错误信息 ‘required‘:‘用户名不能为空‘, ‘min_length‘:‘用户名不能少于6位‘, ‘max_length‘:‘用户名不能大于18位‘ } ) password=fields.CharField(max_length=16,required=True) def login(request): if request.method==‘GET‘: return render(request,‘login.html‘) else: obj=LoginForm(request.POST)#多么牛逼的一个对象啊 # ret=obj.is_valid() #ret的值就是True或False,内部会完成校验 if obj.is_valid(): print(obj.cleaned_data) #obj.cleaned_data是一个字典,里面装的是用户填的所有的信息 #直接models.UserInfo.object.creat(**obj.cleaned_data)就完成注册了 else: print(obj.errors) #obj.errors是一个对象,对象中有一个__str__方法 #如果有错误信息,我们只拿他的第一个,如下,但是在后台拿没有意义 # print(obj.errors[‘username‘][0]) # print(obj.errors[‘password‘][0]) return render(request,‘login.html‘,{‘obj‘:obj}) ‘‘‘ 总结: 1.定义规则 from django.forms import Form from django.forms import fields class LoginForm(Form): username=fields.CharField(max_length=18,min_length=6,required=True,error_messages=..) password=fields.CharField(max_length=16,required=True) 2.使用 obj=LoginForm(request.POST) #开始校验验 v=obj.is_valid() #校验成功True,不成功False 注意:1.form表单的name属性名字和LoginForm下的字段名必须保持一 致这是确保能校验的根本; 2.LoginForm里面写几个规则就会验证几个规则,这样才安全,因 为提交的个数可以在前端进行修改,审查元素->选中input标签-> 右击Edit..->复制一个就会多了一个新的input标签; obj.errors #所有错误信息 obj.cleaned_data #所有的正确信息 ‘‘‘
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/login/" method="POST"> {% csrf_token %} <p>用户:<input type="text" name="username">{{ obj.errors.username.0 }}</p> <p>密码:<input type="password" name="password">{{ obj.errors.password.0 }}</p> <input type="submit" value="提交"> </form> </body> </html>
以上是关于Django之Form组件的主要内容,如果未能解决你的问题,请参考以下文章