day74
作者:互联网
工作环境
1 公司配电脑:
-windows笔记本
-有些公司不让上外网
-只能上一部分
-淘宝,京东
-台式机
-公司用的框架不支持windows
-虚拟机,直接装linux操作系统
-远程连接linux开发(后面讲)
-mac
-mac不适应
2 用自己的电脑
-补贴
3 开一些账号
上节回顾
1 jwt:json web token,前后端登录认证的方式,签发和认证
2 签发和认证
-源码
3 基于自定义的用户表签发和认证token
4 RBAC:基于角色的访问控制
-用户
-角色
-权限
-用户和角色
-角色和权限
-用户和权限
5 django:auth+admin,具有了rbac权限控制的后台管理系统
6 simple-ui的使用,对admin的美化
7 集成echars
今日内容
1 drf 大回顾
1 drf入门规范
-前端后开发模式
-API接口
-postman使用
-做接口测试
-restful规范:10条
-djangorestframework
-APIVIew的执行流程
-Request对象的源码
2 序列化
-序列化和反序列化
-instance,many=True,ser.data
-data,ser.is_valid--->ser.save(updata,create)
-Serializer
-写一个个字段
-字段类型
-字段属性
-重写update,create(跟表模型没有直接联系)
-局部钩子,全局钩子
-ModelSerializer
-重写字段
-SerializerMethodField+配套一个函数get_字段名
-class Meta:
表模型
序列化和反序列化的字段
-局部和全局钩子
-重写update和create
3 请求与响应
-Request类
-解析的编码:局部和全局配置
-Response类:data,status,header
response.data--->
-响应的格式:局部和全局配置
4 视图
-两个视图基类
-APIView
-认证类
-权限类
-GenericAPIView
-两个类属性
-获取单个
-获取所有
-获取序列化的类
-5个视图扩展类
-5个接口:list,retrieve,destory,update,create
-9个视图子类
-写两个类属性
-视图集
-ViewSetMixin:重写了as_view,路由配置变了,自动生成路由
-ViewSet:ViewSetMixin+APIView
GenericViewSet:ViewSetMixin+GenericAPIView
ModelViewSet:5个视图扩展类+ViewSetMixin+GenericAPIView
ReadOnlyModelViewSet:
5 路由
-自动生成路由:继承自ViewSetMixin的视图类
-action装饰器
-在视图类对象中存在:self.action
6 认证,权限,频率
-源码:为什么认证类,配置到视图类中就会执行
-写一个类,继承基类,重写某个方法,全局配置局部配置
7 过滤,排序(查询所有)
-继承了GenericAPIView+ListModelMixin
-在视图类属性中配置 filter_backends=[内置,第三方,自己写的]
-自定义过滤类,继承:BaseFilterBackend,重写filter_queryset
8 分页
-三种分页方式
-配置在继承了GenericAPIView+ListModelMixin的视图类的pagination_class类属性
-继承APIView,需要自己写
9 全局异常处理
-写一个函数
-配置文件配置
10 自动生成接口文档
-接口文档有规范
-yapi:如何使用
11 jwt
12 simple-ui的使用
13 rbac
14
## 频率源码
# SimpleRateThrottle--->allow_request--->self.rate = self.get_rate()
# allow_request
def allow_request(self, request, view):
# self.rate配置文件中配的 '3/m'
if self.rate is None:
return True
# get_cache_key返回谁,就以谁做限制
# ip地址
self.key = self.get_cache_key(request, view)
if self.key is None:
return True
#self.history 是当次访问者ip对应的时间列表
# 从缓存中通过key(ip)值,取出时间列表
self.history = self.cache.get(self.key, [])
# 获取当前时间
self.now = self.timer()
# 列表中只存放咱们规定时间内的实际
while self.history and self.history[-1] <= self.now - self.duration:
self.history.pop()
# 时间列表的长度,如果大于咱们配置的,就不允许访问了
if len(self.history) >= self.num_requests:
return self.throttle_failure()
# 把当前时间插入到时间列表,返回True
return self.throttle_success()
2 前端介绍
1.HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览器中查看
2.Ajax的出现 -> 后台发送异步请求,Render+Ajax混合
3.单用Ajax(加载数据,DOM渲染页面):前后端分离的雏形
4.Angular框架的出现(1个JS框架):出现了“前端工程化”的概念(前端也是1个工程、1个项目)
5.React、Vue框架:当下最火的2个前端框架(Vue:国人喜欢用,React:外国人喜欢用)
6.移动开发(Android+IOS) + Web(Web+微信小程序+支付宝小程序) + 桌面开发(Windows桌面):前端 -> 大前端
7.一套代码在各个平台运行(大前端):谷歌Flutter(Dart语言:和Java很像)可以运行在IOS、Android、PC端
8.在Vue框架的基础性上 uni-app:一套编码 编到10个平台
9.在不久的将来 ,前端框架可能会一统天下
3 Vue介绍
# js的框架
# 构建用户界面的渐进式框架
# MVVM介绍 mvc mvvm mvp
-Model-View-ViewModel
-Model :vue对象的data属性里面的数据,这里的数据要显示到页面中
-View :vue中数据要显示的HTML页面,在vue中,也称之为“视图模板” (HTML+CSS)
-ViewModel:vue中编写代码时的vm对象,它是vue.js的核心,负责连接 View 和 Model数据的中转,保证视图和数据的一致性,所以前面代码中,data里面的数据被显示中p标签中就是vm对象自动完成的(双向数据绑定:JS中变量变了,HTML中数据也跟着改变
# 组件化开发、单页面开发
4 第一个hello world
# 关于编辑器的选择
-Andriostadio:谷歌公司出钱买了jebrains版权+ADT--》
-webstorm:jebrains公司出的 pycharm,goland,idea,phpstorm
-vscode:微软 免费
-sublime text:收费
-咱们使用pycharm,装一个插件开发vue
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="./js/vue.js"></script>
</head>
<body>
<div id="app">
<h1>{{name}}</h1>
</div>
</body>
<script>
var vm=new Vue({
el:'#app', //id为app的div,被vue托管了
data:{
name:'hello world'
}
})
</script>
</html>
作业
#1 (所有人)在django中间件中写,取出访问者ip和访问者客户端类型(User-Agent)---》存入库
# (部分人)把访问者类型转成---》ie,chrom,Firefox ,echars饼形图画出来
# 2 考试:密码加密(md5,makepassword)
标签:vue,self,视图,day74,序列化,data,前端 来源: https://www.cnblogs.com/Gnomeshghy/p/15253320.html