Django 08.19

1.form组件

对前端和后端都要校验

前端校验的目的:减少后台代码连接数据库的压力

django forms:主要针对的是后台的校验

from django.forms import Form
from django.forms import fields

class LoginForm(Form):
    username = fields.CharField(
        required=True,
        max_length=18,
        min_length=6,
        error_messages={
            "required" : "不能为空",
            "max_length" : "不能超过18",
            "min_length" : "不能小于6",
        }
    )
    pwd = fields.CharField()

def login(request):
    if request.method == "GET":
        return render(request,"login.html")
    else:
        obj = LoginForm(request.POST)
        if obj.is_valid():
            print(obj.cleaned_data)
        else:
            print(obj.errors)
        return render(request, "login.html" ,{'obj':obj})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
    <form action="/login/" method="post">
        <input type="text" name="username">{{ obj.errors.username.0 }}<br>
        <input type="password" name="pwd">{{ obj.errors.pwd.errors.0 }}<br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

2.forms数据类型

def test(request):
    return HttpResponse("OK")

from django.forms import Form
from django.forms import fields

class LoginForm(Form):
    username = fields.CharField(
        required=True,
        max_length=18,
        min_length=6,
        error_messages={
            "required" : "不能为空",
            "max_length" : "不能超过18",
            "min_length" : "不能小于6",
        },
        # validators=[], #自定义验证规则
        #### 生成html标签
        widget=fields.Select, #HTML插件 
        label = "用户名",  # 用于生成Label标签或显示内容
        # initial='666', # 初始值
        help_text = '帮助信息',  # 帮助信息(在标签旁边显示)
        # localize=False, # 是否支持本地化
        disabled = False,  # 是否可以编辑
        label_suffix = ">>>",  # Label内容后缀
    )
    pwd = fields.CharField()
    age = fields.IntegerField(
        required=True,
        max_value=100,
        min_value=0,
        error_messages={
            "required":"不能为空",
            "invalid":"格式错误"
        }
    )
    mail = fields.EmailField(
        error_messages={
            "valid":"格式错误"
        }
    )

def login(request):
    if request.method == "GET":
        obj = LoginForm()
        return render(request,"login.html",{"obj":obj})
    else:
        obj = LoginForm(request.POST)
        if obj.is_valid():
            print(obj.cleaned_data)
        else:
            print(obj.errors)
        return render(request, "login.html" ,{'obj':obj})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
    <form action="/login/" method="post" novalidate>
		{{ obj.as_p }}
        {{ obj.username.label }}:{{ obj.username }} {{ obj.errors.username.0 }}
        <input type="submit" value="提交">
    </form>
</body>
</html>
posted @ 2019-08-19 17:19  海森t  阅读(32)  评论(0)    收藏  举报