Django的form组件——正则校验
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('test/',views.test) ]
from django.shortcuts import render,HttpResponse from django import forms from django.core.validators import RegexValidator #导入正则校验器RegexValidator class UserInfo(forms.Form): username = forms.CharField( label='用户名', min_length=6, required=True, validators=[ #自定义校验规则 RegexValidator(r'^a', '必须以a开头'), #第一个参数定义正则规则,第二个参数为错误信息 # RegexValidator(r'b$', '必须以b结尾'), # 可以写多个 ... ], error_messages={ 'required': '不能为空' }, ) password = forms.CharField( label='密码', widget=forms.widgets.PasswordInput(render_value=True) ) def test(request): if request.method == 'GET': u_obj = UserInfo() return render(request, 'test.html', {'u_obj': u_obj}) else: u_obj = UserInfo(request.POST) if u_obj.is_valid(): print(u_obj.cleaned_data) return HttpResponse('检验通过') else: print(u_obj.errors) return render(request, 'test.html', {'u_obj': u_obj})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> <style> </style> </head> <body> <form action="" method="post" novalidate> {% csrf_token %} <div> {{ u_obj.username.label }}:{{ u_obj.username }} {{ u_obj.username.errors.0 }} </div> <div> {{ u_obj.password.label }}:{{ u_obj.password }} {{ u_obj.password.errors.0 }} </div> <div> <input type="submit" value="提交"> </div> </form> </body> </html>