当前位置: 首页 > news >正文

中山专业门户网站制作平台龙岗建设企业网站

中山专业门户网站制作平台,龙岗建设企业网站,合肥品牌型网站建设地址,贵阳网站设计详细解读Forms组件的使用 在html表单验证中#xff0c;需要通过各种信息的验证#xff0c;比如注册界面的姓名、密码、邮箱、电话等的验证#xff0c;是否符合定义好的规则#xff0c;不可能每次都要取出对应的字段一一判断#xff0c;django内置了Forms组件#xff0c;可以方便的…Forms组件的使用 在html表单验证中需要通过各种信息的验证比如注册界面的姓名、密码、邮箱、电话等的验证是否符合定义好的规则不可能每次都要取出对应的字段一一判断django内置了Forms组件可以方便的在HTML中进行校验等信息设置 1.Forms组件的作用 1.数据校验 2.渲染页面 3.渲染错误信息 4.使用局部或者全局的钩子函数 5.设置CSS样式 2.Forms组件的使用 1.导入froms模块 from django import forms2.定义一个类继承自forms.Form,编写校验的字段,该字段就是html页面上提交数据上传的字段class RegisterForms(Form):# 添加的字段类型中的属性每个子类都继承自field#field中对应的属性和释义#requiredTrue, 是否是必须验证,默认为True#widgetNone, HTML插件添加类名设置placeholder等等#labelNone, 用于生成Label标签或显示内容#initialNone, 初始值#help_text, 帮助信息(在标签旁边显示)#error_messagesNone, 错误信息 {required: 不能为空, invalid: 格式错误}#validators[], 自定义验证规则#localizeFalse, 是否支持本地化#disabledFalse, 是否可以编辑#label_suffixNone Label内容后缀name forms.CharField(min_length3,max_length8,label用户名,error_messages{min_length:用户名最少为3位,max_length:用户名最多8位,required:名称不能为空})pwd forms.CharField(min_length6, max_length20,label请输入密码,error_messages{min_length:密码最少为6位,max_length:密码最多20位,required:密码不能为空})re_pwd forms.CharField(min_length6, max_length20,label请确认密码,error_messages{min_length:密码最少为6位,max_length:密码最多20位,required:密码不能为空})phone forms.CharField(label请输入手机号码,error_messages{placerholder: 请输入手机号码})email forms.EmailField(label请输入邮箱,requiredFalse,error_messages{invalid:邮箱格式不合法,max_length:密码最多20位}) # 对于多传的字段不会出错cleaned_data中不包含多传的字段 # 少传的字段会报错相当于对应的字段没有值 3.在对应的views视图中进行校验,def form_index(request):post_forms RegisterForms()error if request.method POST:post_forms RegisterForms(request.POST)# 4 调用forms的is_valid方法完成校验is_valid返回true或者falseif post_forms():register post_forms.cleaned_dataprint(register)return HttpResponse(注册成功)else:from django.forms.utils import ErrorDict# 获取全局的error信息,只显示第一个if post_forms.errors.get(__all__):error post_forms.errors.get(__all__)[0]return render(request, FormsTest/forms_index.html,locals()) 4.通过模板渲染,渲染模板有如下几种方式具体使用如下!DOCTYPE html html langen headmeta charsetUTF-8titleforms登录/title{% load static %}link relstylesheet href{% static bootstrap-3.3.7-dist/css/bootstrap.min.css %}script src{% static jquery-3.3.1.js %}/scriptstyle.edit-author{margin: 100px 300px;}.errorinfo{color: red;font-size: 15px;padding-left: 15px;}/style /head bodydiv classedit-author {# form action methodpost#} {# {% csrf_token %}#} {# div classform-group#} {# label forexampleInputEmail1用户名/label#} {# input typetext namename classform-control placeholder请输入用户名 #} {# /div#} {# div classform-group#} {# label forexampleInputPassword1密码/label#} {# input typepassword namepwd classform-control placeholder请输入密码#} {# /div#} {# div classform-group#} {# label forexampleInputPassword1确认密码/label#} {# input typepassword namere_pwd classform-control placeholder请确认密码#} {# /div#} {# div classform-group#} {# label forexampleInputPassword1邮箱/label#} {# input typeemail nameemail classform-control placeholder请输入邮箱#} {# /div#} {##} {# button typesubmit idclickBtn classbtn btn-default submit-button注册/button#} {# span iderror/span#} {# /form#}{# forms渲染页面第一种方式#} {# form action methodpost#} {# {% csrf_token %}#} {# div classform-group#} {# label forexampleInputEmail1用户名/label#} {# {{ post_forms.name }}#} {# /div#} {# div classform-group#} {# label forexampleInputPassword1密码/label#} {# {{ post_forms.pwd }}#} {# /div#} {# div classform-group#} {# label forexampleInputPassword1确认密码/label#} {# {{ post_forms.re_pwd }}#} {# /div#} {# div classform-group#} {# label forexampleInputPassword1邮箱/label#} {# {{ post_forms.email }}#} {# /div#} {# button typesubmit idclickBtn classbtn btn-default submit-button注册/button#} {# /form#}{# forms渲染页面第二种方式推荐使用#}form action methodpost novalidate{% csrf_token %}{% for foo in reg_forms %}div classform-group{# errors是一个列表一般取第一个就可以了这样不会换行处理#}label forexampleInputEmail1{{ foo.label }}/labelspan classerrorinfo {{ foo.errors.0 }}/span{{ foo }}/div{% endfor %}button typesubmit idclickBtn classbtn btn-default submit-button注册/buttonspan classerrorinfo{{ error }} /span/form{# forms渲染页面第二种方式,不推荐使用#} {# form action methodpost#} {# {% csrf_token %}#} {# {{ post_forms.as_p }}#} {# {{ post_forms.as_ul }}#} {# {{ post_forms.as_table }}#} {# button typesubmit idclickBtn classbtn btn-default submit-button注册/button#} {# /form#}/div/body /html 5.上面只是实现了部分的校验而且展示的样式需要手动渲染我们可以在定义模型的时候直接设置好对应的css展示样式和自定义校验规则比如电话号码的正则校验等等#导入widgets模块设置css的展示样式 from django.forms import widgets#接下来修改对应的namepwdphone等字段添加新属性如下添加了占位符和类名这个时候的登录界面就和上面的一样name forms.CharField(min_length3,max_length8,label用户名,widgetwidgets.TextInput(attrs{class: form-control,placeholder: 请输入名称(3-8字符)}),error_messages{min_length:用户名最少为3位,max_length:用户名最多8位,required:名称不能为空})pwd forms.CharField(min_length6, max_length20,label请输入密码,widgetwidgets.PasswordInput(attrs{class:form-control,placeholder:请输入密码(6-20字符)}),error_messages{min_length:密码最少为6位,max_length:密码最多20位,required:密码不能为空})re_pwd forms.CharField(min_length6, max_length20,label请确认密码,widgetwidgets.PasswordInput(attrs{class: form-control,placeholder: 请确认密码}),error_messages{min_length:密码最少为6位,max_length:密码最多20位,required:密码不能为空})phone forms.CharField(label请输入手机号码,widgetwidgets.TextInput(attrs{class: form-control,placeholder: 请输入手机号码}),error_messages{placerholder: 请输入手机号码})email forms.EmailField(label请输入邮箱,requiredFalse,widgetwidgets.TextInput(attrs{class: form-control,placeholder: 请输入邮箱}),error_messages{invalid:邮箱格式不合法,max_length:密码最多20位})6.自定义校验规则有时django自带的校验并不能满足我们所有的需求比如校验密码输入不能用特殊字符手机号码格式定义正则等这就需要我们自定义规则#自定义校验规则 def mobile_validate(value):mobile_re re.compile(r^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$)if not mobile_re.match(value):raise ValidationError(手机号码格式错误)#在定义字段的时候添加校验规则,校验规则传入的是一个列表可以有多个校验规则 phone forms.CharField(label请输入手机号码,validators[mobile_validate,],widgetwidgets.TextInput(attrs{class: form-control,placeholder: 请输入手机号码}),error_messages{placerholder: 请输入手机号码})7.自定义钩子实现自定义的错误提示和校验规则,#Django中钩子分为局部钩子和全局钩子 # 局部钩子函数(某个字段自定义的规则数据库是否存在以什么开头) # 方法名必须为:clean_字段名 def clean_name(self):#获取到当前对象是cleaned_data之后的数据name self.cleaned_data.get(name)if name.startswith(sb):#以sb开头了返回错误信息,禁止使用sb开头的用户名raise ValidationError(不能以sb开头)# 数据库中查询有没有这个名称user models.UserInfo.objects.filter(usernamename).first()if user:raise ValidationError(用户名已存在)return name#全局钩子方法名必须是clean #校验两次密码是否相同等 def clean(self):pwd self.cleaned_data.get(pwd)re_pwd self.cleaned_data.get(re_pwd)if pwd re_pwd:return self.cleaned_dataelse:raise ValidationError(两次密码不一致)3.最后实现的效果如下图 转载于:https://www.cnblogs.com/zj901203/p/11057612.html
http://www.zqtcl.cn/news/796435/

相关文章:

  • 天眼查在线查询系统seo平台优化服务
  • 建设部网站 注册违规北京梵客装饰
  • 大连制作网站报价网站网站怎么做代理
  • php做网站如何架构品牌vi设计欣赏
  • 网站外链建设与文章发布规范网址例子
  • 外贸网站空间选择商业计划书
  • 手机作图软件app专业做邯郸网站优化
  • 济南网站定制制作wordpress theid
  • 企业网站建设能解决什么问题设计房子需要多少钱
  • 专业网站开发制作石家庄信息门户网站定制
  • 藤虎网络广州网站建设网站域名实名认证官网
  • 佛山专业网站建设公司推荐it行业做网站一个月多少钱
  • 三网合一网站怎么做苏醒主题做的网站
  • wordpress站内统计插件wordpress模板 单栏
  • 龙岩网站定制网站开发 技术路线
  • 广州制作网站开发网站标题怎么设置
  • 海南旅游网站开发背景做网站兼容ie
  • 查找人网站 优帮云本地升级wordpress
  • 安庆什么网站好小事做wordpress主题vue
  • 高端商品网站网络运维工程师面试题及答案
  • 做网站的dw全称是啥适合迷茫年轻人的工作
  • 免费软件库合集软件资料网站wordpress go链接跳转错误
  • 重庆那里做网站外包好和镜像网站做友链
  • 网站栏目关键词装修效果图制作软件
  • 企业网站开发公司-北京公司北京医疗网站建设公司
  • 可以做配音兼职的网站产品网站怎样做外部链接
  • 如何制作网站效果图做外单要上什么网站
  • 网站开发预算编制网站可以制作ios
  • 强化网站建设网页翻译怎么弄出来
  • 长春火车站到龙嘉机场高铁时刻表视频网站建设公司排名