Django Rest Framework八大组件
DRF整合了非常多的开发常用组件,认证,授权、限流等等,简单配置即可使用
认证和授权全局配置开启全局配置,只要请求后端接口,都需要进行认证才可以请求成功
settings.py
12345678910111213# DRF 组件配置REST_FRAMEWORK = { # 内部循环遍历注册的认证类,一旦成功,结束循环 'DEFAULT_AUTHENTICATION_CLASSES': ( # 'dfdemo.authentication.CustomAuthentication', # 自定义认证 'rest_framework.authentication.SessionAuthentication', # session 认证 'rest_framework.authentication.BasicAuthentication', # 基本认证 ), # 权限配置 'DEFAULT_PERMISSION_CLA ...
Django Rest Framework请求响应视图路由
DRF封装了很多关于请求信息的参数,我们可以通过 request获取,响应 Response 也有着规定的模板,让接口响应更加规范。
在视图中,封装了非常多的视图类,便于简化视图层操作。
APIView是DRF中提供的所有视图类的积累,它继承于django.views.View,传入的请求是DRF的 Request实例,任何APIException异常都会被捕获,并且传递给合适的响应 ,业务代码需要自己写
ViewSet,继承自APIView,没有继承拓展类,业务逻辑还得自己去写,提供action参数,进行视图和路由 的绑定,不再使用http请求作为视图方法 get post put delete 可以自己指定路由和方法绑定,实现把关于一个模型的操作都写在一个类里
GenericViewSet,继承自GenericAPIView,没有继承拓展类,业务逻辑还得自己去写,把部分公共代码实现了服用。不再使用http请求作为视图方法 get post put delete 可以自己指定路由和方法绑定,实现把关于一个模型的操作都写在一个类里
两个拓展视图集:
ModelViewSet ...
Django Rest Framework序列化器
在返回json数据时,整合DRF后并没有取出QuerySet中的数据,再转字典,也能直接返回json,这就是序列化器的功劳。
序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串
反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型
反序列化,完成数据校验功能
12345678class StudentModelSerializer(serializers.ModelSerializer): class Meta: model = Student # 序列化字段 # 全部 fields = '__all__' # 一个一个写 # fields =['id','name']
student序列化器继承了 serializers.ModelSerializer,这是转为数据库中的表设计的,一一对应,帮我们重写了create()和update()方法,所以与数据库 ...
Django Rest Framework入门
Python应用非常广泛,人工智能领域、自动化、Web开发中都有着不错的生态支持。
在Web开发领域,Djang和Flask作为目前主流的Web框架社区热度非常高,Django比Flask体积大很多,可以搭建大型的Web应用服务器,所以最近也在学这个框架。
其实Django东西并不多,相反写起来有点复杂。Django REST framework(后面简称DRF)就出现了,以RESTful作为接口命名规范,在操作数据时加入序列化器简化数据校验,字段返回等操作,封装视图层简化接口编写和参数返回,提供认证、权限、限流、过滤、排序、分页、异常处理、API接口文档等组件,功能非常强大,可以说仅仅Django是一个基石,DRF才是真正的开发必备。
下面从0到1,总结自己学习DRF的过程。
Django REST framework 入门
Django REST framework 序列化器
Django REST framework 请求响应 视图 路由
Django REST framework 八大组件
环境准备
Windows 10
Python 3.6
Mysql 5.7
D ...
Python环境相关的问题
困扰我很多天的Python环境问题终于得到解决了,今天把遇到的问题做个复盘
Python库安装很慢这个问题其实很常见,当我们只是安装了Python3.X的基础运行环境,所拉取库镜像是在国外的,受网速的影响,下一些大一点的可以就很慢,常常下载失败。
常遇到:
1Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/numpy/
第一个解决办法:
1pip install xxx --index-url http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
这是临时的一种方法,可以解燃眉之急
第二种解决办法:
在本地机器新建配置文件,加入国内镜像网站
要在用户的目录下新建个pip文件夹,在里面新建个pip.ini,文件内容配置如下:
1234[global]index-url = http://pypi.douban.com/simple[install]trusted-host=pypi.douban.com
这样就可以把镜像拉取地址 ...
Python环境搭建
Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。
Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。
版本选择Python主要的版本分支是3.X和2.X,2.X和3.X分支是不兼容的,可以说是相互独立的,所以在安装环境的时候,一定要注意版本问题。
这里我选的3.6这个大版本
Python安装这里很简单,贴个官网连接,选个适合自己电脑系统和位数的文件就行了
Python安装官网
下载下来,需要注意的是在安装中需要勾选把Python环境加入PATH中,一直点下一步就行了,安装完成后可以在开始中找到新增的四个模块:
也可以通过在CMD界面中输入python检验是否安装成功
点开IDLE,Python自带的IDE就可以编写Python程序了,但我们通常编写程序还是用的Pycharm
Pycharm安装与配置Pycharm和Idea都是 JetBrains的软件,都是收费的,当然Pycharm的简单版本是免费的,但后面做项目是需要更多功能支持的,这里还是需要安装专业版。
网上找个下载链接下载安装破解就行了, ...
仰望星空,脚踏实地
这几天闲的无聊,又不想看论文,索性就把自己这大半年的经历记录下来吧,希望对以后要校招的同学有用!
分四个部分:考研or就业,专业素养的培养,求职历程和总结,技术相关的我就一笔带过了,让这篇随笔更具大众化。
考研or就业?这是每个本科生都会面临的一个选择,可能很多同学在大一都抱着考研的心态,甚至是更早。
那我想说的就是假如到大三了有这个困惑,不得不在考研和就业中做个选择,说明你还是有自己的想法,懂得为自己的前程着想,结果都不会太差!
我也是经历过这个时期,考虑了很多,接下来就把我认为重要的两个要素列举下来吧:
时间线
动机
时间线的意思是不要过早去想考研这件事情,特别是很多同学大一入校来就想着考研,啥活动也不参加,只知道学习。这里我以两个例子来论证:
第一个就是我大一的时候,采访了我们学院的考研寝室,当时是作为学生会的身份去采访他,然后做一期推文,因为是自己和部长一起去的,所以记忆非常深刻,这篇推文还在管院微信发出来了,链接:【考研】我不想做一个空想家,第一个问题就是考研时间线的把握,应该是正式考研的前一年的9月开始选择和关注考研,然后当年3月开始,一直到12月上战场。学长告诫就是不 ...
绿盟研发一二三面 已OC
绿盟科技一面
2021年8月19日 10:00-10:42 HR电话提前约了面试时间,通过邮箱发了腾讯会议ID,面试官很准时,而且是个姐姐 哈哈哈
自我介绍+项目,这里讲了很久,讲了自己在每个项目的角色和任务分工,提到了数据库设计
就讲了下自己在开发中遇到的数据库设计,以及自己开发中遇到数据库设计遇到的坑
SQL优化,面试必问—>查询字段,数据库设计,走索引,索引失效,创建索引,单表数据过大要分表
绿盟主要业务?卧槽,这个真不知道,海投的,后面查了下是和阿里云,奇安信,深信服并列的网络安全公司
都是SpringBoot项目对吧,如何考虑一个SpringBoot项目的安全?(绿盟就是国内数一数二的做安全的企业),我就说了下平时注意的:
server.port 不用常用端口
数据库角色,不直接使用root
密码,用网站随机生成
token+拦截器
统一异常返回
假如有富文本编辑器输入,要转义,防止XSS
SpringBoot如何解决跨域?平时开发常常用,讲了下跨域就是对源地址和端口的限定,一般解决方案是在Controller的接口那加上@CorssOrigin(自 ...
刷面经
线程池七大参数:
核心线程数量大小
最大线程数量大小
等待时间
等待时间单位
阻塞队列
ArrayBlockingQueue(基于数组),LinkedBlockingQueue(基于链表,无界队列,可传入参数构建有界队列),PriorityBlockingQueue(支持优先级的无界阻塞队列,因为是无界,所以put不会阻塞)
构建工厂 一般都是默认
拒绝策略(四大策略)
满了就抛异常(默认),满了就不管,满了就抛弃队列最早的,满了就由调用该方法的线程去执行
为什么不用Excutor创建线程?
Excutor是创建线程池的工具类,有四个
SingleThreadPool
FixedThreadPool
CacheThreadPool
ScheduleThreadPool
前两个是会创建固定的线程数,但是阻塞队列是无边界的,会导致请求的堆积,最终OOM
后两个会创建Integer.MAX_VALUE个线程,导致OOM
向线程池添加任务后线程池的处理逻辑
首先判断当前线程池任务量有没有达到核心线程数大小,没有达到就创建线程来执行任务
到达了,就看阻塞队列满没 ...
百度提前批一面
百度MEG提前批一面 base 上海
08.05 14:50-15:50 面试官提前加的我微信,商量了面试时间,面试用的百度的自研的Web视频会议网站
自我介绍,项目介绍
算法题:
根号三的小数点后10位 —>没整出来
快排
线程安全的单例(懒汉和饿汉式)
hashmap八股 1.7->1.8 寻址算法 get的过程
hashmap是线程安全的?怎么用线程安全map?—>hashtable hashmap加锁 concurentHashmap(首选)
concurentHashmap底层实现 1.7—>1.8 讲讲分段锁吧
sql的优化 —>前一篇面经已经说了,这里就再赘述
Spring的Aop?底层实现? 底层实现当时紧张答成了反射???wc
Spring的作用域?只说了原型,单例,还有几个忘了
Redis基本数据类型,底层实现,简单说下应用场景,你常用的是什么,项目中怎么用到的?
Redis常用命令,没说几个,因为都是用的Spring的RedisTemplate,要恶补下啊
Redis的缓存击穿,缓存穿透,缓存 ...