自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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(九):认证和权限

认证自定义认证权限自定义权限

2021-09-14 20:41:27 928

原创 DRF(十六):jwt认证

jwt价绍jwt签发和认证自定义jwt签发和认证

2021-09-14 15:05:28 1482 2

原创 DRF(八):视图集和路由

路由自动生成路由自定义路由

2021-09-14 14:58:31 171

原创 DRF(七):视图扩展类和视图子类

视图子类视图集

2021-09-14 14:57:21 295

原创 DRF(六):视图类

视图基类APIViewGenericAPIView视图扩展类

2021-09-14 14:56:00 208

原创 DRF(五):Request和Response

RequestResponse自定义Response

2021-09-14 14:48:15 359

原创 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

原创 Linux安装

1.打开WMvare虚拟机,选择创建新的虚拟机2,选择自定义向导:3.选择虚拟机版本...

2021-08-20 15:42:20 51

转载 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关注的人

提示
确定要删除当前文章?
取消 删除