数据校验

第六章、forms组件

徘徊边缘 提交于 2019-12-02 19:51:35
目录 第六章、forms组件 一、注册功能手写 二、forms组件完整写法 基本使用 三、forms组件前端渲染标签组件 三、forms组件其他知识点 在python console测试 校验数据 form组件数据校验的规则 四、其他几个常见字段类型 五、forms组件所有内置字段类型 六、forms组件的字段常见参数 用正则来约束 七、forms组件钩子函数 八、通过后端修改前端的样式 第六章、forms组件 一、注册功能手写 要求 1.注册功能 用户输入的用户名中 不能包含西游记 如果包含了 就提示用户 输入的内容不符合社会主义核心价值观 用户输入的密码 不能小于三位 如果密码少于三位 提示用户 密码太短了 说明 (******) 校验数据通常是前后端都有校验 但是前端校验可有可无 哪怕再牛逼 后端也必须要有校验 反正一句话 前端可有不校验 后端必须校验!!! 分析 1.搭建前端页面 >>> 渲染页面 2.获取前端用户提交的数据校验 >>> 校验数据 3.对数据的校验的结果 展示到前端页面给用户查看 >>> 展示错误信息 前端代码 #reg.html部分代码 <form action="" method="post"> <p>username: <input type="text" name="username"> <span style="color: red">{{

第三阶段:Django框架 day63 Django--分页器和form组件的使用

梦想的初衷 提交于 2019-12-02 19:51:17
目录 一、Django实现批量插入数据 二、Django实现分页器 三、Django创建多对多表关系的三种方式 3.1 全自动(推荐使用) 3.2 纯手动(不推荐) 3.3 半自动(推荐使用 ******) 四、form检验表单(今日重点) 4.1 form组件的使用 4.2 forms组件钩子函数 4.3 form组件改变input框的type属性值 4.4 form组件支持正则校验 第三阶段:Django框架 day63 Django--分页器和form组件的使用 一、Django实现批量插入数据 要求 :往书籍表中插入数据 1000 方法一 for i in range(1000): # 这种插入方式 效率极低 models.Book.objects.create(title='第%s本书'%i) 方法二 book_list = [] for i in range(100000): # 时间还是很短 两者差距很大 book_list.append(models.Book(title='第%s本书'%i)) models.Book.objects.bulk_create(book_list) # 批量插入数据 二、Django实现分页器 自定义分页器的使用 新建一个py文件将代码直接拷贝过去 核心代码(直接以包的形式导入即可) class Pagination(object):

Django之Form组件

杀马特。学长 韩版系。学妹 提交于 2019-12-02 19:51:12
目录 Django之Form组件 一、Form组件介绍 二、Form组件的使用 Django之Form组件 一、Form组件介绍 Form组件主要的功能如下: 生成前端页面能用的HTML标签(渲染页面) 对用户提交的数据进行校验(校验数据) 把数据的校验结果展示到前端页面(展示错误信息) 输入框保留用户上次输入的数据(保留数据) 二、Form组件的使用 ​ 在Django项目中通常情况下我们会在需要使用Form组件的app下新建一forms.py文件,然后在该文件下书写内容. 示例: # app下的forms.py from django import forms # 自定义一个类继承forms.Form class RegisterForm(forms.Form): username = forms.CharField(min_length=3, max_length=11) password = forms.CharField(min_length=6, max_length=11) 校验数据: # Python console from app01 import views # 1.给自定义的类传一个字典 obj=views.MyRegForm({'username':'jason','password':'12','email':'123'}) # 2.判断数据是否全部合法

form组件

陌路散爱 提交于 2019-12-02 19:49:39
form组件 这里抛出一个问题 校验: 1.注册功能 用户输入的用户名中 不能包含‘xxx’ 如果包含了 就提示用户 输入的内容不符合社会主义核心价值观 用户输入的密码 不能小于三位 如果密码少于三位 提示用户 密码太短了 校验数据通常是前后端都有校验 但是前端校验可有可无 哪怕再牛逼 后端也必须要有校验 反正一句话 前端可有不校验 后端必须校验!! (深深的体现了开发鄙视链) 这个时候用 form组件 就可以自动帮我们完成三个功能: 1.搭建前端页面(渲染页面) 2.获取前端用户提交的数据校验(校验数据) 3.对数据的校验的结果 展示到前端页面给用户查看 (展示错误信息) 我们首先需要自己写一个继承了Form的类。 from django import forms class MyRegForm(forms.Form): username = forms.CharField(min_length=3,max_length=8) password = forms.CharField(min_length=3,max_length=8) email = forms.EmailField() 如何校验数据? from app01 import views # 1.给自定义的类传一个字典 obj = views.MyRegForm({'username':'jason',

Django—分页器与form组件

社会主义新天地 提交于 2019-12-02 19:46:32
目录 分页器 现成分页器代码 如何使用 后端 前端 form组件 form 校验组件 使用校验组件与钩子函数 三种渲染方式 正则校验* 分页器 现成分页器代码 只需要会使用即可。 在Django项目下新建utils文件夹,新建一个py文件,放入封装好的分页器代码。 class Pagination(object): def __init__(self, current_page, all_count, per_page_num=10, pager_count=11): """ 封装分页相关数据 :param current_page: 当前页 :param all_count: 数据库中的数据总条数 :param per_page_num: 每页显示的数据条数 :param pager_count: 最多显示的页码个数 用法: queryset = model.objects.all() page_obj = Pagination(current_page,all_count) page_data = queryset[page_obj.start:page_obj.end] 获取数据用page_data而不再使用原始的queryset 获取前端分页样式用page_obj.page_html """ try: current_page = int(current_page)

Django杂篇(1)

Deadly 提交于 2019-12-02 19:43:57
目录 Django杂篇(1) bulk_create Pagination 创建多对多表关系的常用方法 form校验组件的应用 渲染页面 展示错误信息 校验数据 常用字段 Django杂篇(1) 这里我们介绍以下Django常用的一些小工具,分别是: bulk_create,一种将数据批量插入数据库的方法,效率较高 Pagination,自定义的一种分页器,重点在于其思路和使用 多对多表关系的创建方法,常见的有三种 form校验组件的应用,其主要作用就是按照我们的要求校验数据的格式,并取到符合条件以及不符合条件的数据和报错 bulk_create 其实批量插入数据的原理非常简单,在日常来看,我们在向数据库插入数据的时候,通常都是一条一条的插入,如果有相似数据,我们通常会用一个循环,来持续插入,实际上这种方法如果在数据量比较大的情况下会非常耗时,所以我们才会引入这种插入方式,下面就用一个非常简单的例子来做一下对比,首先我们创建一个Django项目,命名第一个应用名为app01. # 我们在models里面创建一个最简单的书籍表 # app01/models.py class Book(models.Model): title=models.CharField(max_length=32) # 然后在Terminal窗口,输入python manage.py

Django之forms组件

北城以北 提交于 2019-12-02 19:41:35
目录 forms组件 forms组件基本用法 渲染页面 注意事项: 三种渲染前端页面的方式 如何展示错误信息 取消前端校验功能 展示错误信息 forms组件钩子函数 局部钩子 全局钩子 forms组件其他字段及操作方式 如何改变input框的type属性值 其他字段了解知识点(知道有这些对象 需要用到的时候 能够知道去哪找) 每个字段,还支持正则校验 forms组件 例如我们写一个注册功能,要求是: ​ 用户输入的用户名中 不能包含666 ​ 如果包含了 就提示用户 输入的内容不符合社会主义核心价值观 ​ 用户输入的密码 不能小于三位 ​ 如果密码少于三位 提示用户 密码太短了 这就需要搭建前端页面,对前端用户提交的数据进行校验,将错误信息展示到前端页面给用户看 要注意的是:校验数据通常是前后端都有校验 但是前端校验可有可无 哪怕再牛逼 后端也必须要有校验 反正一句话 前端可有不校验 后端必须校验!!! 1.搭建前端页面 >>> 渲染页面 2.获取前端用户提交的数据校验 >>> 校验数据 3.对数据的校验的结果 展示到前端页面给用户查看 >>> 展示错误信息 forms组件能够自动帮你完成三件事: 渲染页面 校验数据 展示信息 forms组件基本用法 1、首先要先写一个类 from django import forms class MyRegForm(forms.Form):

【1029 | Day55】Form组件

怎甘沉沦 提交于 2019-12-02 19:41:34
目录 4. form组件 4.1 form组件的功能 4.2 form组件的使用 4.3 校验数据 4.4 渲染页面 4.4.1 三种渲染前端页面的方式 4.5 展示错误信息 4.5.1 取消前端的校验 4.5.2 展示错误信息 4.6 forms组件钩子函数 4.6.1 局部钩子 4.6.2 全局钩子 4.7 改变input框的type属性值 4.8 form-control属性 4. form组件 4.1 form组件的功能 1.搭建前端页面 >>> 渲染页面 2.获取前端用户提交的数据校验 >>> 校验数据 3.对数据的校验的结果 展示到前端页面给用户查看 >>> 展示错误信息 4.2 form组件的使用 自己要先写一个类 from django import forms class MyRegForm(forms.Form): username = forms.CharField(min_length=3,max_length=8) password = forms.CharField(min_length=3,max_length=8) email = forms.EmailField() 4.3 校验数据 from app01 import views # 1.给自定义的类传一个字典 obj = views.MyRegForm({'username':'jason',

Django之form组件

我怕爱的太早我们不能终老 提交于 2019-12-02 19:37:42
目录 批量插入数据 自定义分页器 基本逻辑 封装好的自定义分页器 创建多对多表关系的三种方式 全自动 纯手动 半自动(推荐使用) form校验组件 渲染页面 校验数据 自己先写一个类 展示错误信息 如何取消前端帮我们做的校验 展示错误信息 利用其它form字段进行数据校验 forms组件钩子函数 批量插入数据 如果我们要在数据库中成批量的插入数据,我们有两种方法,见下图: 相对于第一种方法(进行for循环,把每一条数据一一插入到数据库中), bulk_create 的插入数据的速度实在是太快了,和第一种真的不能相提并论,直接上图,一决高下 自定义分页器 基本逻辑 封装好的自定义分页器 我们只需要新建一个py文件,将代码直接拷贝过去就行 后端 前端 自定义分页器内容 class Pagination(object): def __init__(self, current_page, all_count, per_page_num=10, pager_count=11): """ 封装分页相关数据 :param current_page: 当前页 :param all_count: 数据库中的数据总条数 :param per_page_num: 每页显示的数据条数 :param pager_count: 最多显示的页码个数 用法: queryset = model.objects

分页器组件与form组件

£可爱£侵袭症+ 提交于 2019-12-02 19:35:21
批量插入数据 bulk_create # 1.往书籍表中插入数据 1000 # for i in range(1000): # 这种插入方式 效率极低 # models.Book.objects.create(title='第%s本书'%i) book_list = [] for i in range(100000): # 时间还是很短 两者差距很大 book_list.append(models.Book(title='第%s本书'%i)) models.Book.objects.bulk_create(book_list) # 批量插入数据 # 2.将刚刚插入的数据查询出来展示到前端 book_queryset = models.Book.objects.all() return render(request,'index.html',locals()) 分页器 #新建一个py文件将代码直接拷贝过去 class Pagination(object): def __init__(self,current_page,all_count,per_page_num=2,pager_count=11): """ 封装分页相关数据 :param current_page: 当前页 :param all_count: 数据库中的数据总条数 :param per_page_num: