数据校验

DRF--验证

北城以北 提交于 2019-12-07 14:05:23
前戏 在之前我们对前端妹子传来的数据进行校验,使用的是序列化类来进行校验的,但这里面往往满足不了我们的需求,更多的时候我们希望自己定义校验规则。这里介绍三种自定义校验的方式。分别是单一字段校验,多个字段校验,还有就是自定义校验 单一字段校验 在序列化器BookSerializer自定义一个方法 class BookSerializer(serializers.Serializer): id = serializers.IntegerField(required=False) # 只序列化,不走校验 title = serializers.CharField(max_length=32, validators=[my_validate]) pub_time = serializers.DateField() category = serializers.CharField(source="get_category_display", read_only=True) # 只序列化用 # 因为前端传的是数字,所以需要重写 post_category = serializers.IntegerField(write_only=True) # 只反序列化用 publisher = PublisherSerializer(read_only=True) # 一对多的表 只序列化用

JavaScript代码库---2019持续更新

北城以北 提交于 2019-12-07 06:23:46
这个代码库全部是自己平时工作中总结出来的,还有一些是在网上浏览各种博客时整理出来的。有需要的朋友可以作为参考,某些地方如果有误,还请各位留言指出。 2018-10-25 .1.js中入门/入口函数的写法//前提条件需要引入jQuery $(document).ready(function() { //初始化时需要做的一些事情 //如果需要初始化多个函数,并且需要让这几个函数按照顺序执行,则可以采取如下的方式,使用一个立即执行函数 (async () => { await a();//初始化时执行的函数a await b();//初始化时执行的函数b await c();//初始化时执行的函数c })(); //还有一种初始化方式 当页面初始化时,有多个方法,而一个方法初始化时需要使用另外一个方法初始化的结果,这种情况就可以使用下面这种方式初始化//// 初始化汇总//这里有一点需要注意,async/await//函数是在ES7的标准规范中才正式确立下来//要不要在ES6中使用还需慎重//不过这种写法倒是值得推介// initSummary().then(result => { console.log(`initSummary: ${result}`); }).catch(err => { msgError(`${err}`); console.log(`initSummary

Springboot 中的配置文件

久未见 提交于 2019-12-06 17:34:27
Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件。他们的作用都是修改Spring Boot自动配置的默认值。 技术:yaml、properties语法,ConfigurationProperties和Value注解的使用,配置文件占位符的使用 一、YAML简介 yml是YAML(YAML Ain't Markup Language)语言的文件,以数据为中心,比json、xml等更适合做配置文件 yml和xml相比,少了一些结构化的代码,使数据更直接,一目了然。 yml和json呢?没有谁好谁坏,合适才是最好的。yml的语法比json优雅,注释更标准,适合做配置文件。json作为一种机器交换格式比yml强,更适合做api调用的数据交换。 一)YAML语法 以空格的缩进程度来控制层级关系。空格的个数并不重要,只要左边空格对齐则视为同一个层级。 注意不能用tab代替空格 。 且大小写敏感 。支持字面值,对象,数组三种数据结构,也支持复合结构。 字面值 :字符串,布尔类型,数值,日期。字符串默认不加引号,单引号会转义特殊字符。日期格式支持yyyy/MM/dd HH:mm:ss 对象 :由键值对组成,形如 key:(空格)value 的数据组成。冒号后面的空格是必须要有的,每组键值对占用一行,且缩进的程度要一致,也可以使用行内写法:{k1: v1,

Django --- csrf相关,auth相关

北城以北 提交于 2019-12-06 15:30:18
目录 1.csrf相关 1.跨站请求伪造 2.跨站请求伪造问题解决 3.crsf中间件 4.csrf装饰FBV的装饰器 5.csrf装饰CBV的装饰器 6.django settings源码刨析 2.auth模块 1.创建超级用户 2.创建用户 3.校验用户名和密码是否正确 4.保存用户登录状态 5.判断当前用户是否登录 6.校验原密码是否正确 7.修改密码 8.注销 9.校验用户登录的登录装饰器 10.auth扩展表 1.csrf相关 1.跨站请求伪造 跨站请求伪造:当用户访问一个网站的时候,搭建一个与用户想要访问的网站一摸一样的网站,使假网站的提交地址与站网站的一致,这时候用户访问的是假网站,但是操作却是在真网站上进行反馈的,例如银行网站。 原理:后端只能识别post请求,但是不能识别是不是自己网站返回的post请求 注意点: 1.真假网站的页面一致 2.提交请求的form表单中的action指向正确的网页地址,在提交的时候让后端以为是真网页提交过来的数据 3.在假网站中做一些操作,使用户在进行操作的时候默认的是假网站的设置提交的 2.跨站请求伪造问题解决 思路:只处理自己的网站发送过来的POST请求 解决方式:token 1.token token的特性是, 发送请求的时候:网站返回给用户一个form表单的时候,会自动添加一个token值发送到前端的页面中,这个token值是

django基础之day09,创建一个forms表单组件进行表单校验,知识点:error_messages,label,required,invalid,局部钩子函数,全局钩子函数, forms_obj.cleaned_data,forms_obj.errors,locals(), {{ forms.label }}:{{ forms }},{{ forms.errors.0 }}

北战南征 提交于 2019-12-06 15:10:24
利用forms表单组件进行表单校验,完成用户名,密码,确认密码,邮箱功能的校验 该作业包含了下面的知识点: error_messages,label,required,invalid,局部钩子函数,全局钩子函数, forms_obj.cleaned_data,forms_obj.errors,locals(), {{ forms.label }}:{{ forms }},{{ forms.errors.0 }} urls.py文件 添加index访问路径 from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^register/', views.register), url(r'^index/', views.index), ] views.py文件 创建视图函数 #***************************forms组件************************ # 使用forms组件,完成数据校验,展示错误信息 # 使用forms组件的前提是,你需要提前写一个类 from django import forms from

day 56 forms组件

China☆狼群 提交于 2019-12-06 15:03:46
day 56 forms组件 01. forms组件作用 渲染标签 校验数据 保留信息 02. 使用forms组件的前提 提前写好一个类 from django import forms class MyForm(forms.Form): name = forms.CharField(label='用户名') pwd = forms.CharField(label='密码') 03. forms组件的使用 校验数据 def register(request): forms_obj = MyForms() # 为get请求渲染前端页面用 if request.method == 'POST': forms_obj = MyForms(request.POST) # 将POST这个字典直接传给类 if forms_obj.is_valid(): # 判断是否符合校验规格 return HttpResponse('数据全部正确') return render(request, 'register.html', {'forms': forms_obj}) 向forms对象传入一个字典,key为字段名(可以多传,不能少传) 判断是否符合is_valid 查看不符合要求的字段errors 如何查看符合校验规则的数据cleaned_data 渲染前端标签 生成一个空的forms组件对象

写自定义参数验证方式

青春壹個敷衍的年華 提交于 2019-12-06 14:44:20
本次发表文章距上次发表已近有两月有余,原因是两月前离开了上家公司(离开原因可能会在年终终结叙述,本篇暂且忽略),来到了现在所在的京东集团,需要花时间熟悉环境和沉淀一下新的东西,因此写文章也暂时没那么勤奋了,不得不说这次是机遇也是对自己职业生涯的一次重要决定。 话说本篇内容主要分享的是自定义方法参数的验证,参数的基本校验在对外接口或者公用方法时经常所见,用过hibernate的验证方式的朋友一定不会陌生,读完本篇内容能够很好的帮助各位朋友对自定义参数验证方式有一定了解: 自定义参数验证的思路 实战参数验证的公用方法 aop结合方法参数验证实例 自定义参数验证的思路 对于自定义参数验证来说,需要注意的步骤有以下几步: 怎么区分需要验证的参数,或者说参数实体类中需要验证的属性(答案:可用注解标记) 对于参数要验证哪几种数据格式(如:非空、邮箱、电话以及是否满足正则等格式) 怎么获取要验证的参数数据(如:怎么获取方法参数实体传递进来的数据) 验证失败时提示的错误信息描述(如:统一默认校验错误信息,或者获取根据标记验证注解传递的错误提示文字暴露出去) 在哪一步做校验(如:进入方法内部时校验,或是可以用aop方式统一校验位置) 实战参数验证的公用方法 根据上面思路描述,我们首先需要有注解来标记哪些实体属性需要做不同的校验,因此这里创建两种校验注解(为了本章简短性):IsNotBlank

面向站长和网站管理员的Web缓存加速指南

自闭症网瘾萝莉.ら 提交于 2019-12-06 13:36:40
原文(英文)地址: http://www.mnot.net/cache_docs/ 版权声明: 署名-非商业性使用-禁止演绎 2.0 这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中。为了简要起见,某些实现方面的细节被简化或省略了。如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容。 什么是Web缓存,为什么要使用它? 缓存的类型: 浏览器缓存; 代理服务器缓存; Web缓存无害吗?为什么要鼓励缓存? Web缓存如何工作: 如何控制(控制不)缓存: HTML Meta标签 vs. HTTP头信息; Pragma HTTP头信息(为什么不起作用); 使用Expires(过期时间)HTTP头信息控制保鲜期; Cache-Control(缓存控制) HTTP头信息; 校验参数和校验; 创建利于缓存网站的窍门; 编写利于缓存的脚本; 常见问题解答; 缓存机制的实现:Web服务器端配置; 缓存机制的实现:服务器端脚本; 参考文档和深入阅读; 关于本文档; 什么是Web缓存,为什么要使用它? Web缓存位于Web服务器之间(1个或多个,内容源服务器)和客户端之间(1个或多个):缓存会根据进来的请求保存输出内容的副本,例如html页面, 图片,文件(统称为副本),然后,当下一个请求来到的时候

Form组件 钩子方法

拜拜、爱过 提交于 2019-12-06 12:57:26
Form和ModeForm Form组件 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把他们包起来. 同时我们在好多场景下都需要对用户进行校验,比如校验用户是否输入,输入的长度和格式等正不正确,如果用户输入的内容有错误就需要在页面上相应的位置显示对相应的错误信息 总结: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通方式注册功能 Views.py def register(request): error = '' if request.method=='POST': uname=request.POST.get('uname') pwd=request.POST.get('pwd') #对注册进行校验 if len(uname)<6: error='用户长度不能小于6位' else: #将用户名和密码写入数据库中 user_obj=models.User.objects.create( unme=uname, pwd = pwd ) user_obj.save() return HttpResponse('注册成功') return render(request, "register.html", {"error_msg": error_msg}) 使用form组件实现注册功能 views

day59

不打扰是莪最后的温柔 提交于 2019-12-06 11:40:47
多对多的三种创建方式   1、全自动(推荐使用的**) 优势:第三张可以任意的扩展字段 缺点:ORM查询不方便,如果后续字段增加更改时不便添加修改   manyToManyField创建的第三张表属于虚拟的,后缀会自动添加有_id的外键字段 创建的方式:   2、纯手动(不推荐使用)   需要手动创第三方表 优势:第三张表可以任意的扩展字段 缺点:ORM查询不便    3、半自动(推荐使用***) 优势:结合了全自动和半自动的两个优点,把建表的关系直接在一张表上表示出来 这样创建的表,在多对多时不支持ORM的操作有以下几种: """ 多对多字段的 add set remove clear不支持 """ Form组件   forms组件功能   1、校验功能: 就是将form表单中的值在post请求发送到服务端时,服务端利用forms组件去检验是否符合规则 form表单中的name属性值要和自定义forms组件的字段一致。   2、标签的渲染功能   3、渲染错误的信息   4、局部钩子,再次检验 使用forms组件是实现注册功能 简单的注册功能的版本:   实现简单的校验功能。设置条件,在注册的时候进行有效的检验 views.py from django.shortcuts import render,reverse,redirect,HttpResponse from