- 博客(44)
- 收藏
- 关注
原创 DRF 框架之 API文档 Swagger配置
参考文档: https://github.com/axnsan12/drf-yasg安装pip install drf_yasg在settings.py中注册:INSTALLED_APPS = [ 'django.contrib.staticfiles', # swagger 'drf_yasg',]在urls.py中配置路由:from django.contrib import adminfrom django.urls import pat.
2021-10-19 17:21:01
509
原创 001.redis总结
Redis介绍博客地址:https://www.cnblogs.com/liuqingzheng/articles/9833534.html1 非关系型数据库,纯内存操作,key-value存储,性能很高2 缓存,计数器,验证码,geo地理位置信息,发布订阅,独立用户统计3 5大数据类型:字符串,列表,hash,集合,有序集合4 6.x之前是单线程,单进程,为什么这么快? qps:每秒查询率:10w,真实6w -纯内存操作 -使用了io多路复用的模型,epoll (select,po
2021-10-08 08:38:57
240
原创 DRF(三):反序列化和模型序列化器
反序列化1.1 数据验证使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。在获取反序列化的数据前,必须调用is_valid()方法进行验证,验证成功返回True,否则返回False。验证失败,可以通过序列化器对象的errors属性获取错误信息,返回字典,包含了字段和字段的错误。如果是非字段错误,可以通过修改REST framework配置中的NON_FIELD_ERRORS_KEY来控制错误字典中的键名。验证成功,可以通过序列化器对象的valid
2021-09-13 21:38:53
231
原创 DRF(二):序列化器
一 序列化器-Serializer作用:1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串2. 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型3. 反序列化,完成数据校验功能1.1 定义序列化器Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。首先我们要有数据库模型类Publish:
2021-09-08 19:22:46
278
原创 DRF(十四):认证源码分析
源码分析认证的执行,是发生在dispatch函数的过程中。image-20201230142921787值得注意的是,封装request的时候,我们的指定的认证类也会一起封装在新的request里面。image-20201230144040055接下来看看get_authenticators的执行。image-20201230144621995使用列表生成式挨个实例化了每个authentication_classes里面的认证类。而authentication_cl
2021-09-07 18:15:41
93
原创 DRF(十五):权限频率源码分析
权限控制前言用户验证用户权限,根据不同访问权限控制对不同内容的访问。建议了解视图、token验证的内容。使用流程自定义访问权限类,继承BasePermission,重写has_permission()方法,如果权限通过,就返回True,不通过就返回False。has_permission()方法接受两个参数,分别是request和view,也就是视图类的实例化本身。image-20210106113656701配置。局部配置:pythonpermission_cla
2021-09-07 18:15:07
90
原创 DRF(十三):处理全局异常
自定义全局异常DRF默认的异常处理,只处理APIException及其子类的异常,处理不了的会返回None,我们可以判断异常是否属于APIException及其子类的异常,如果是则返回错误信息,如果不是,那么我们则返回服务器错误。# 默认的异常处理,缺陷在它只处理APIException及其子类的异常,处理不了的会返回Nonefrom rest_framework.views import exception_handlerfrom rest_framework.response import R
2021-09-07 15:56:29
465
原创 DRF(十二):分页
可选分页器1) PageNumberPagination基本分页前端访问网址形式:GET http://127.0.0.1:8000/students/?page=4可以在子类中定义的属性:page_size 每页数目page_query_param 前端发送的页数关键字名,默认为”page”page_size_query_param 前端发送的每页数目关键字名,默认为Nonemax_page_size 前端最多能设置的每页数量# APIViewfrom rest_framewo
2021-09-06 23:30:20
252
原创 DRF(十一):过滤排序
过滤Filtering使用场景:在获取所有或者部分数据的时候使用。过滤和分页是GenericVIew中的属性,所以只能在GenenricView以及其子类中才可以使用。第一种:SearchFilter类在用SearchFilter类过滤时要注意postman中输入的接口地址最后的格式为?search=xxx。前面必须是?search=,后面是过滤内容。SearchFilter:支持模糊查询。from rest_framework.filters import SearchFilterclass
2021-09-06 23:07:06
533
原创 DRF(十):频率
频率内置频率类调用内置频率类:需要自己写个类,然后继承SimpleRateThrottle# 限制用户的访问次数:根据用户ip地址限制# 访问者IP地址 -request.META.get('REMOTE_ADDR') #####内置频率类的使用# 1 写一个类,继承SimpleRateThrottle,重写get_cache_key,返回ip就以ip限制# 2 在类中写一个类属性:scope = 'ip_m_3'class MyThrotting(SimpleRateThrott
2021-09-06 22:15:08
107
原创 DRF(一)-Restful规范和APIView源码分析
1 web开发模式前后端不分离前后端分离2 api接口通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点url:长得像返回数据的url链接https://api.map.baidu.com/place/v2/search请求方式:get、post、put、patch、delete采用get方式请求上方接口请求参数:json或xml格式的key-value类型数据
2021-09-06 19:51:09
189
原创 自定义分页器
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: 每页显示的数据条数
2021-08-27 11:56:09
71
转载 01、套接字工作流程
套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行,Linux所提供的功能(如打印服务,ftp等)通常都是通过套接字来进行通信的,套接字的创建和使用与管道是有区别的,因为套接字明确地将客户和服务器区分出来,套接字可以实现将多个客户连接到一个服务器。套接字,也称为BSD套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。应用层通过传输层进
2021-07-02 14:54:04
1012
转载 01.BS架构和CS架构的区别
1、CS、BS架构定义 CS(Client/Server):客户端----服务器结构。C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。因为客户端要负责绝大多数的业务逻辑和UI展示,又称为胖客户端。它充分利用两端硬件,将任务分配到Client 和Server两端,降低了系统的通讯开销。C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。 C/S 架构
2021-07-02 14:36:53
1404
原创 python-字典元组集合内置方法
‘’’大括号括起来:内部可以存放多个元素元素的表现形式是以k:v键值对的形式k是不可变类型:一般都是字符串v可以是任意类型‘’’k是字符串d1 = {‘username’:‘jason’,‘password’:‘123’,‘hobby’:[‘read’,‘run’]}print(d1,type(d1))# k是整型d2 = {1:‘jason’,2:‘egon’,3:‘kevin’}print(d2,type(d2))# k是浮点型d3 = {1.1:‘jason’
2021-06-03 18:54:51
300
1
原创 python-:字符串列表的内置方法
中括号包括的元素,元素之间用逗号隔开print(type(list(18))) # 不能print(type(list(11.11))) # 不能print(type(list(‘world’)))print(type(list([1,2,3,4,5])))print(type(list({‘name’:‘jason’,‘age’:18})))print(type(list(True))) #不能‘’’能够执行for循环的,都能被list()转换成列表‘’’name = [‘jason’
2021-06-02 14:52:46
89
原创 python-分支结构与循环结构
昨日内容回顾与用户交互输入 input 在python3上述关键字获取到的用户输入都是字符串类型 在python2上述关键字获取到的用户输入需要用户自己指定类型 raw_input等价于python3里面的input输出 print 可以连续打印多个值 逗号隔开即可格式化输出%s 任意类型占位符 'my name is %s'%'jason' 'my name is %s my age is %s'%('jason',123)%d 数
2021-06-01 20:38:25
94
原创 python-运算符
上周内容回顾编写py程序的两种方式1.cmd窗口2.文本编程环境 pycharm 笨重 vscode sublime编程环境的选择方式1.pycharn破解版变量与常量1.变量的定义(底层逻辑) 变量名 赋值符号 变量值2.变量名的命名规范: 数字,字母 下划线的组合 数字不能开头,下划线尽量不使用 不能与关键字冲突 '''变量名一定要见名知意''' 3.变量名的命名风格: 1.下划线式(python建议使用) user_n
2021-05-31 18:21:00
59
转载 Ubuntu中创建新用户
在Ubuntu中创建新用户,通常会用到两个命令:useradd和adduser。虽然作用一样,但用法却不尽相同: 1. 使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:一无Home Directory,二无密码,三无系统Shell。 解决方法: sudo useradd -m -s /bin/bas
2016-12-06 16:13:06
615
转载 vi编辑只读文档无法保存的解决办法
vi编辑只读文档无法保存的解决办法 使用普通用户编辑nginx.conf 等配置文件:保存的时 候会提示:没有Root Permission 可以用如下方法解决:保存时加上::w !sudo tee %我这里 有一个问题。没有配置sudo权限。用sudo时提示"xxx is not in the sudoers file. This incident
2016-12-06 16:06:50
4707
转载 ubuntu apache服务无法重启的解决(新装系统后)
加入这行信息就可解决 ServerName 127.0.0.1如下:dante@ubuntu:~$ sudo vim /etc/apache2/sites-available/default ServerName 127.0.0.1 //在这里添加 ServerAdmin webmaster@localhost
2016-12-01 12:25:50
571
转载 ubuntu中nat模式设置静态ip
网上资料很多,但是都不怎么实用,这里给大家总结一下。nat模式上网。因为nat本身就能上网为什么还要设置ip。这有点自找麻烦。但是在集群这是必须的。要么你搭建伪分布,要么至少具有三台物理机器。为了节省成本,一般会选择伪分布。伪分布也有选择,三种模式那种方式比较合适。1.桥接,这种方式对于大多数来说比较简单。只要设置一下ip,dns,网关等,主机和虚拟机之间关系不是很大。但是如果是pc机拨号上网
2016-12-01 11:47:52
374
转载 javascript深入理解闭包
一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。Js代码 var n=999; function f1(){ alert(n); } f1(); // 999另一
2016-11-07 18:36:40
158
转载 继承的5种方式
js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现方式可以实现多继承)实现原理:让父类的构造函数成为子类的方法,然后调用该子类的方法,通过this关键字给所有的属性和方法赋值Js代码 function P
2016-11-07 18:32:50
278
原创 坐标位置
//客户区坐标的位置(表示鼠标指针在视口的水平和垂直坐标)//不包括浏览器上方的客户区clientX和clientYvar div=document.getElementById("myDiv");EventUtil.addHandler(div,"click",function(event){ event=EventUtil.getEvent(event); alert("Client
2016-11-06 14:34:29
281
转载 正则表达式常用表示
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,包括校验数字、字符、一些特殊的需求等等。给自己留个底,也给朋友们做个参考。一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开
2016-11-05 15:30:22
582
转载 js实现发送短信验证码后的倒计时功能(无视页面刷新)
前分享过只用js实现倒计时的功能,后来测试时发现,刷新或关闭网页后,倒计时就不能用了.网上也没找到合适的解决方案,所以自己就写了个,这次的算是优化版吧,能满足刷新或重新打开网页后,倒计时依然能用特别说明: cookie最初创建的有效时间是60秒.也就是说,你如果在倒计时为20的时候,关闭网页.20秒之后再打开,是不会有倒计时显示的;但是,如果倒计时为20时,关闭页面,如果在20秒内
2016-11-04 21:16:53
945
转载 js中的cookie的读写操作示例详解
cookie是有有效期的,cookie的默认有效期是从cookie生成至浏览器关闭,也可以通过设置cookie的有效期来指定其失效日期;用户也可以禁止cookie也可以手动删除cookie。cookie是一小段信息,以键/值对的信息保存在计算机硬盘上的字符串, cookie存储容量大概在4kb,不同的浏览器厂家对cookie大小的限制有微微的差异;cookie主要的本质是“识别”,通过识别
2016-11-04 20:43:57
242
转载 javascript正则表达式
正则表达式可以: •测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证 •替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字 •根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字 正则表达式语法 一个正则表达式就是由
2016-11-03 10:00:32
155
转载 javascript json对象操作(基本增删改查)
/** * Json对象操作,增删改查 * * @author lellansin * @blog www.lellansin.com * @version 0.1 * * 解决一些常见的问题 * get/set 解决获取和设置时,无节点中断的问题 * create 可以创建多级节点,若存在则覆盖新值 * delete 删除节点及其子节点 * print_r 格式化
2016-11-03 08:50:11
4123
1
转载 前端优化
链接:http://www.zhihu.com/question/21658448/answer/18903129 1. 从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供更为友好的体验。 2. 从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源。 总之,恰当的优化不仅能够改善站点的用户体验并且能够节省相当的资
2016-09-07 20:16:55
200
转载 代码的规范性
1.HTML原则1.规范 。保证您的代码规范,保证结构表现行为相互分离。2.简洁。保证代码的最简化,避免多余的空格、空行,保持代码的语义化,尽量使用具有语义的元素,避免使用样式属性和行为属性。任何时候都要用尽量简单、尽量少的元素解决问题。3.实用。遵循标准,但是不能以牺牲实用性为代价。4.忠诚。选择一套规范,然后始终遵循。不管代码由多少人参与,都应该看起来像一个人写的一样
2016-09-07 19:36:24
1159
转载 前端优化的规则
1.减少Http请求使用图片地图使用CSS Sprites合并JS和CSS文件这个是由于浏览器对同一个host有并行下载的限制,http请求越多,总体下载速度越慢2.使用CDN(内容发布网络):当页面中有很多资源的时候,可以从不同的服务中去读取,同时可以提高并行下载速度3.添加http Expires头:为图片视频之类很少改变的资源设置长的Expires时间将直接减
2016-09-07 19:32:36
196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人