数据校验

中间件、csrf跨站请求伪造、Auth模块

☆樱花仙子☆ 提交于 2019-11-30 12:32:04
Django中间件 1、什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能 说的直白一点中间件是帮助我们 在视图函数执行之前和执行之后都可以做一些额外的操作 ,它本质上就是一个自定义类,类中定义了几个方法,Django框架会在请求的特定的时间去执行这些方法。 我们一直都在使用中间件,只是没有注意到而已,打开Django项目的Settings.py文件,看到下图的MIDDLEWARE配置项。 默认的七个中间件: MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware

django之forms组件

匆匆过客 提交于 2019-11-30 12:30:59
forms组件能够直接帮助我们完成三步操作:  1.渲染前端页面  2.校验数据是否合法 3.展示错误信息 一.forms组件基本用法 1.写一个基础的forms.Form的类 from django import forms class LoginForm(forms.Form): username = forms.CharField(max_length=8,min_length=3) # 用户名最长八位最短三位 password = forms.CharField(max_length=8,min_length=5) # 密码最长八位最短五位 email = forms.EmailField() # email必须是邮箱格式 2.基本使用 在django中 python console中 首先导入 from app01 import views #1.将需要校验的数据 以字典的方式传递给自定义的类 实例化产生对象 form_obj = views.LoginForm({'username':'jason','password':'123','email':'123'}) #2.如何查看数据是否全部合法 form_obj.is_valid() # 只有所有的数据都符合要求 才会是TrueFalse #3.如何查看错误原因 form_obj.errors {'password':

Django form组件

懵懂的女人 提交于 2019-11-30 12:19:25
forms组件 前戏 手动实现一个注册功能用户名不能含有'haha',密码不能小于3位数 <!--前端--> <form action="" method="post"> <p>username:<input type="text" name="username"> <span>{{ errors.username }}</span></p> <!--用于展示错误提示--> <p>password:<input type="text" name="password"> <span>{{ errors.password }}</span></p> <input type="submit"> </form> # 后端 def login(request): # 定义一个报错信息字典,用于前端span标签错误提示 errors = {'username':'', 'password':''} if request.method == 'POST': # 获取到用户名合密码 username = request.POST.get('username') password = request.POST.get('password') # 判断用户名和密码规则 if 'haha' in username: errors['username'] = '用户名不规范' if len

Django - Form和ModelForm

☆樱花仙子☆ 提交于 2019-11-30 11:27:31
一. form介绍   1.生成页面可用的HTML标签   2. 提供input可以提交数据   3. 对用户提交的数据进行校验   4. 保留上次输入内容   5. 提供错误信息 二. 普通方式书写注册功能 login.html views.py 三. 使用form组件实现注册功能,自动创建表单 login2.html views.py 四. form常用的字段和与插件     创建Form类时,主要涉及到 【字段】 和 【插件】,字段用于对用户请求数据的验证,插件用于自动生成HTML;    1. 组件         视图中: form_obj = RegForm() # 实例化form对象 return render(request, 'reg2.html', {'form_obj': form_obj})      模板中:         form标签加上novalidate 前段不进行校验 {{ form_obj.as_p }} ——》 生成所有的p标签 label input {{ form_obj.errors }} ——》所有字段的错误 {{ form_obj.user }} ——》 该字段的input框 {{ form_obj.user.label }} ——》 该字段的label 中文提示 {{ form_obj.user.id_for_label }} —

forms组件和cookie和session

别等时光非礼了梦想. 提交于 2019-11-30 11:26:47
一、多对多三种创建方式 1.全自动(推荐使用*).ManyToManyField(to='Author') ​ 优势:不需要你手动创建第三张表 ​ 不足:由于第三张表不是你手动创建的,也就意味着第三张表字段是固定的无法做扩展 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) authors = models.ManyToManyField(to='Author') class Author(models.Model): name = models.CharField(max_length=32) 2.纯手动(了解即可) 自己创建第三张表:Book2Author() ​ 优势:第三张可以任意的扩展字段 ​ 不足:orm查询不方便 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) class Author(models.Model): name = models.CharField(max

django框架 day08

空扰寡人 提交于 2019-11-30 11:24:10
今日内容: 1.多对多三种创建方式 2.forms组件 3.钩子函数 4.forms组件其他字段及操作方式 5.cookie和session 1.多对多三种创建方式 第一种:全自动(推荐使用) 优势:不需要你手动创建第三张表 不足: 由于第三张表不是你手动创建的,也就意味着第三张表字段是固定的无法做扩展。 示例: class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) authors = models.ManyToManyField(to='Author') class Author(models.Model): name = models.CharField(max_length=32) 第二种:纯手动(这种了解就可以了) 自己创建第三张表。 优势:第三张可以任意的扩展字段 不足:orm查询不方便,因为正向查询的时候是依靠字段的,这个时候俩边都没有字段。 class Book(models.Model):   title = models.CharField(max_length=32)   price = models.DecimalField(max_digits=8,decimal

Django之form组件加cookie,session

Deadly 提交于 2019-11-30 11:00:52
---恢复内容开始--- 多对表的三种创建 一全自动(推荐使用)   优点:不需要手动创建第三张表也就是我们之前一直用的,靠那个不会在数据库中显示的虚拟字段,告诉orm帮我们创建能够表示多对多关系的第三张表。   缺点:因为都是orm帮我们完全创建好了,所以拓展性低,字段都已经固定死了。    class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) authors = models.ManyToManyField(to='Author')class Author(models.Model):    name = models.CharField(max_length=32) 纯手动(了解即可)   自己创建第三张表   优点:因为是自己创建的,所以拓展性高   缺点:要自己手动,另外不能用正向查询了 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) class Author(models

validator 自动化校验

此生再无相见时 提交于 2019-11-30 08:18:05
温馨提示 请收藏再看。此文篇幅太长,你短时间看不完;此文干货太多,错过太可惜。 示例代码可以关注 逸飞兮 (公众号)回复 jy 获取。 收获 讲解详细:能让你掌握使用 hibernate-validator 及类似校验工具的各种使用姿势 内容全面:可以当做知识字典来查询 what 注意:hibernate-validator 与 持久层框架 hibernate 没有什么关系,hibernate-validator 是 hibernate 组织下的一个 开源项目 。 hibernate-validator 是 JSR 380(Bean Validation 2.0) 、 JSR 303(Bean Validation 1.0) 规范的实现。 JSR 380 - Bean Validation 2.0 定义了一个实体和方法验证的元数据模型和 API。 JavaEE(改名为:Jakarta EE)中制定了 validation 规范,即:javax.validation-api(现为 jakarta.validation-api,jar 包的名字改变,包里面的包名、类名未变,因此使用方式不变)包, spring-boot-starter-web 、 spring-boot-starter-webflux 包都已引入此依赖,直接使用即可。 有点类似于 slf4j 与 logback

Django - 自定义Form校验规则

旧巷老猫 提交于 2019-11-30 05:56:10
自定义Form校验规则 class MyForm(forms.Form): # form可以校验的规则 username = fields.CharField(max_length=32,min_length=3) password = fields.CharField(max_length=32,min_length=3) re_password = fields.CharField(max_length=32,min_length=3) 局部钩子 - 校验用户名不能重复 def clean_username(self): # 获取username username = self.cleaned_data['username'] # 判断用户名是否存在 if models.User.objects.filter(username=username).count(): # 存在即不符合规则,必须抛出ValidationError异常 raise ValidationError('该用户名已存在') # 校验通过,则返回清洗后的数据 return self.cleaned_data['username'] 全局钩子 - 检验两次密码输入一致 def clean(self): # 获取两次输入的密码 password = self.cleaned_data['password'] re

java.io.IOException:org.apache.hadoop.fs.ChecksumException: Checksum error 校验和(checksum)出现异常

[亡魂溺海] 提交于 2019-11-29 21:49:49
在查询hive中的数据时,报如下错误: 错误原因: 从提示用可以看出是:CheckSumException ,即 校验和异常, 出现该错误的 原因 :存储的数据与hadoop系统为该数据生成的校核和数据不一致导致错误,说白了,就是你存储的数据出现问题了,如:人为手动更改了数据,网络不稳定以及硬件损坏等因素导致的。本博客是我自己为了复现这个错误, 特地更改 了hive上的源数据。 如上图,我是通过notepad++更改了源数据,不是通过hive命令更改了数据,导致crc文件并没有做相应的更新,当我再次在hive使用select查询语句查询源数据的时候,就报了 校验和 异常。说明源数据遭到了损坏。此时,为了能查询到数据,直接将crc文件删除,再使用select查询语句即可查询到响应的数据。 为了详细了解hadoop的校验原理,参考下面的博客: 博客链接: https://blog.csdn.net/lb812913059/article/details/79718303 博客标题:Hadoop数据完整性与CheckSum校验原理 博客原文: 一、HDFS数据完整性 用户肯定都希望系统在存储和处理数据时,数据不会有任何丢失或损坏。但是,受网络不稳定、硬件损坏等因素,IO操作过程中难免会出现数据丢失或脏数据,难免会出现数据丢失或脏数据,数据传输的量越大,出现错误的概率就越高。