django框架中form组件的简单使用示例:注册验证
Django中form组件的三大特点:
1. 生成页面可使用的HTML标签
2. 对用户提交的数据进行初步校验
3. 保留上次输入内容
废话不多说,直接进入正题。
这是注册界面截图:

与上一篇ajax不同的是,ajax是输入光标移动后,就提交到后台验证;而form组件则是需要点击注册后,才会在前端校验。
代码(views.py): (注释部分是常用到的一下组件的方法,都有比较详细的注释,大家可以自行研究)
from django.shortcuts import render, HttpResponse
from app01 import models
# 导入forms组件
from django import forms
from django.forms import widgets
from django.core.validators import RegexValidator
# Create your views here. class RegForms(forms.Form):
name = forms.CharField(
label="帐号",
max_length=16,
# 自定义类的属性
widget=widgets.TextInput(attrs={"class": "form-control"}),
error_messages={
"required": "帐号不能为空"
}
)
# 调用form组件内部方法创建一个长度不大于16且不小于8的密码文本框
pwd = forms.CharField(
label="密码",
max_length=16,
min_length=8,
# 定义为密码文本,render_value设置为验证不通过时不把密码刷新掉
widget=widgets.PasswordInput(attrs={"class": "form-control"}, render_value=True),
error_messages={
"min_length": "密码不能少于8位数",
"required": "密码不能为空"
}
) re_pwd = forms.CharField(
label="确认密码",
max_length=16,
min_length=8,
# 定义为密码文本,render_value设置为验证不通过时不把密码刷新掉
widget=widgets.PasswordInput(attrs={"class": "form-control"}, render_value=True),
error_messages={
"min_length": "密码不能少于8位数",
"required": "密码不能为空"
}
)
email = forms.EmailField(
label="邮箱",
widget=widgets.EmailInput(attrs={"class": "form-control"}),
error_messages={
"required": "邮箱地址不能为空",
# invalid 是校验格式是否正确
"invalid": "邮箱地址格式错误",
}
)
mobliphone = forms.CharField(
label="手机",
widget=widgets.TextInput(attrs={"class": "form-control"}),
# form 组件中用正则判断是否符合条件
validators=[RegexValidator(r'^[0-9]+$', '请输入数字'), RegexValidator(r'^159[0-9]+$', '数字必须以159开头')],
error_messages={
"required": "手机号码不能为空",
}
) # # 单radio值为字符串
# gender = forms.fields.ChoiceField(
# choices=((1, "男"), (2, "女"), (3, "保密")),
# label="性别",
# initial=3,
# widget=forms.widgets.RadioSelect()
# ) # # 单选Select
# hobby = forms.fields.ChoiceField(
# choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
# label="爱好",
# initial=3,
# widget=forms.widgets.Select()
# ) # # 多选Select
# hobby = forms.fields.MultipleChoiceField(
# choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
# label="爱好",
# initial=[1, 3],
# widget=forms.widgets.SelectMultiple()
# ) # # 单选checkbox
# keep = forms.fields.ChoiceField(
# label="记住密码",
# initial="checked",
# widget=forms.widgets.CheckboxInput()
# ) # # 多选checkbox
# hobby = forms.fields.MultipleChoiceField(
# choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
# label="爱好",
# initial=[1, 3],
# widget=forms.widgets.CheckboxSelectMultiple()
# ) # 注册
def register(request):
# 实例化对象类
form_obj = RegForms()
if request.method == 'POST':
# 实例化form对象的同时传入从网页通过post方式提交过来的参数
form_obj = RegForms(request.POST)
# 调用form_obj校验数据的方法
if form_obj.is_valid():
# return HttpResponse("注册成功!")
# print(form_obj.cleaned_data)
# 去除字典中的re_pwd项
del form_obj.cleaned_data["re_pwd"]
# print(form_obj.cleaned_data)
models.Tset01.objects.create(**form_obj.cleaned_data)
return HttpResponse("注册成功!") return render(request, "register.html", {"form_obj": form_obj}) 代码(HTML):
<form action="/register/" method="post" novalidate>
{% csrf_token %}
{# 下面的if语句是用来判断是否有错误 #}
<div class="form-group {% if form_obj.name.errors.0 %} has-error {% endif %}">
{# 相当于注册截图中的“帐号”(下同)#}
{{ form_obj.name.label }}
{# 相当于注册截图中的文本框 (下同)#}
{{ form_obj.name }}
<span class="help-block">{{ form_obj.name.errors.0 }}</span>
</div>
<div class="form-group {% if form_obj.pwd.errors.0 %} has-error {% endif %}">
{{ form_obj.pwd.label }}
{{ form_obj.pwd }}
<span class="help-block">{{ form_obj.pwd.errors.0 }}</span>
</div>
<div class="form-group {% if form_obj.re_pwd.errors.0 %} has-error {% endif %}">
{{ form_obj.re_pwd.label }}
{{ form_obj.re_pwd }}
<span class="help-block">{{ form_obj.re_pwd.errors.0 }}</span>
</div>
<div class="form-group {% if form_obj.email.errors.0 %} has-error {% endif %}">
{{ form_obj.email.label }}
{{ form_obj.email }}
<span class="help-block">{{ form_obj.email.errors.0 }}</span>
</div>
<div class="form-group {% if form_obj.mobliphone.errors.0 %} has-error {% endif %}">
{{ form_obj.mobliphone.label }}
{{ form_obj.mobliphone }}
<span class="help-block">{{ form_obj.mobliphone.errors.0 }}</span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-success" value="注册">
</div>
注释得明明白白的,有不懂的可以一起探讨,共同进步!
django框架中form组件的简单使用示例:注册验证的更多相关文章
- Django框架11 /form组件、modelForm组件
Django框架11 /form组件.modelForm组件 目录 Django框架11 /form组件.modelForm组件 1. form组件介绍 2. form常用字段与插件 3. form所 ...
- Django框架 之 form组件的钩子
Django框架 之 form组件的钩子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3 ...
- Django框架 之 form组件
Django框架 之 form组件 浏览目录 Form介绍 普通的登录 使用form组件 Form详情 常用字段 校验 进阶 使用Django Form流程 一.Form介绍 我们之前在HTML页面中 ...
- django框架进阶-form组件-长期维护
################## form组件做了什么事情? ####################### 之前web开发的模式,以注册为例 1,要有一个注册页面,然后有一个f ...
- Django框架之Form组件
一.初探Form组件 在介绍Form组件之前,让大家先看看它强大的功能吧!Go... 下面我们来看看代码吧! 1.创建Form类 from django.forms import Form from ...
- Django 框架之Form组件
1. Django的Form主要具有以下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交的数据 初始化页面显示内容 2. 第一个案例: # 第一步: 创建 ...
- Django框架【form组件】
from django.shortcuts import render,redirect # Create your views here. from .models import * from dj ...
- django框架中form表单Post方法无法提交 Forbidden (403) CSRF verification failed. Request aborted.
问题如图: 解决方法: 在视图函数中引入并使用装饰器 from django.views.decorators.csrf import csrf_exempt @csrf_exempt
- python3开发进阶-Django框架中form的查看校验方法is_valid()的源码,自定义验证方法
form表单的校验方法is_valid() 点开我们发现这个函数里面只有两个方法方法,最终返回True or False 我们点进.is_bound属性,里面判断传输的数据不是空和上传文件不是空 点进 ...
随机推荐
- UE4外包团队:更新一下UE4和Unity3D案例
全部的贴图都是用出的法线贴图构建的话只用了阳光和天光,都是静态光源,视角是第一人称模板最后的效果嘛就是全4K,120帧,0错误0警告,场景小是小了点但是效果还不错. 工作活有时间更新,欢迎有UE4和U ...
- Socket编程 之使用fsockopen()函数
fsockopen函数:初始化一个套接字连接到指定主机(hostname) get方式: client.php <?php //创建连接 $fp=fsockopen('localhost',80 ...
- 《Java8实战》读书笔记
个人感悟: 1.lambda表达式,补充了JAVA在面向对象之外,面向过程的一面.在写面向过程代码的时候更方面了,甚至可以利用代码来做类似数学公式的运算(P64) 2.流,对集合的操作,就像用SQL对 ...
- 在单机Docker上安装 Traefik 反向代理-负载均衡器
一.创建Traefik和容器应用的连接网络 sudo docker network create traefik-net 二.下载Traefik样本配置文件wget https://raw.githu ...
- jmeter实践之数据库参数传递
一.需求: 1.业务需求:根据手机号到数据库中查看用户id,再根据用户id查看该注册用户下关联的健康成员. 2.参数化分析 1)需要根据不同的手机号进行查询,所以手机号需要进行参数化 2)用户id要作 ...
- Spring Boot 返回 JSON 数据,一分钟搞定!
如何返回 JSON 数据? 在 Spring Boot 中返回 JSON 数据很简单,如下几步. 加入依赖 12345678910 <parent> <groupId>org. ...
- Python Django Web开发的5个优秀好习惯
https://blog.csdn.net/weixin_42134789/article/details/82381854
- 关于Oracle单行函数的讲解
单行函数:对单个数值进行操作,并返回一个值. 分类:1.字符函数 1)concat(a,b) 拼接a,b两个字符串数据 2)initcap(x) 将每个单词x首字母大写 3)low ...
- Git笔记整理
git 分支: &.创建分支 创建分支很简单:git branch <分支名> &.切换分支 git checkout <分支名& ...
- JVM调优之Tomcat启动加速(二)
使用 startup.bat 启动Tomcat 服务器时,start.bat 调用了bin 目录下的calalina.bat 文件. 如果需要配置 Tomcat的JVM参数,可以将参数写入 cata ...