Django Form组件验证功能
Django Form验证
前端:form表单
后台:创建form类,当请求到来时,先匹配,匹配出正确和错误信息
实例:
1.创建Django项目
2.创建app, 名称:'formtest'
3.urls.py
from django.contrib import admin from django.urls import path from formTest import views as fm urlpatterns = [ path('admin/', admin.site.urls), path('formtest.html', fm.formtest ), ]
4.formtest/views.py
from django.shortcuts import render, HttpResponse from django.forms import Form, fields class MyForm(Form): user = fields.CharField(
label='用户名', min_length=6, max_length=32, required=True, error_messages={ 'min_length': '用户名最少6个字符', 'max_length': '用户名最多32个字符', 'required': '用户名不能为空' } ) age = fields.IntegerField(
label='年龄', max_value=200, min_value=0, required=True, error_messages={ 'max_value': '年龄超过限制', 'min_value': '年龄低于限制', 'invalid': '必须为整数类型', 'required': '年龄不能为空' } ) pwd = fields.CharField(
label='密码', min_length=8, required=True, error_messages={ 'min_length': '至少8个字符', 'required': '密码不能为空' } ) email = fields.EmailField(
label='邮箱', required=True, error_messages={ 'required': '邮箱不能为空', 'invalid': '邮箱格式错误' } ) phone = fields.IntegerField(
label='手机号', required=True, error_messages={ 'required': '手机号不能为空', 'invalid': '必须为整数类型' } ) def formtest(request): if request.method == 'GET': obj = MyForm() return render(request, 'formtest.html', {'obj': obj}) elif request.method == 'POST': obj = MyForm(request.POST) if obj.is_valid():
print(obj.cleaned_data) return HttpResponse('验证成功') else: return render(request, 'formtest.html', {'obj': obj})
5.前端 /templates/formtest.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/formtest.html" method="POST"> <p>{{obj.user.label}}{{ obj.user }}{{ obj.errors.user.0 }}</p> <p>{{obj.age.label}}{{ obj.age }}{{ obj.errors.age.0 }}</p> <p>{{obj.pwd.label}}{{ obj.pwd }}{{ obj.errors.pwd.0 }}</p> <p>{{obj.email.label}}{{ obj.email }}{{ obj.errors.email.0 }}</p> <p>{{obj.phone.label}}{{ obj.phone }}{{ obj.errors.phone.0 }}</p> <p><input type="submit" value="提交"></p> </form> </body> </html>
浙公网安备 33010602011771号