首页 > 代码库 > Django之Form组件

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 #所有的正确信息
‘‘‘
Views代码

 

技术分享
<!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=http://www.mamicode.com/"提交">
    </form>
</body>
</html>
login.html

 

Django之Form组件