Django Rest Framework 版本控制
Django Rest Framework 版本控制前言
通过DRF写的视图类,都会继承APIVIEW,而APIVIEW类继承VIEW,同时其重写了as_view方法【使之cbv能够url传参】
dispatch方法,重新封装了request对象
将老的request对象赋值为_request
前端传过来的所有数据给了:request.data
之前的request.GET封装成:request.query_params
版本控制是做什么用的, 我们为什么要用?
开发是有周期,及版本迭代的,新版本上线,老版本也不能直接拉下,需要进行维护
版本控制是怎么实现的version版本信息 赋值给了 request.version
版本控制方案 赋值给了 request.versioning_scheme
从而之后我们在视图中就可以通过request点属性,操作版本信息了
其实这个版本控制方案~就是我们配置的版本控制的类~~
也就是说,APIView通过这个方法初始化自己提供的组件~~
DRF提供了5种版本控制类的方法:
1234567891011121314151617181920 ...
Django Rest Framework 序列操作
Django Rest Framework 序列号组件serializers是什么?
将复杂的数据结构,例如ORM中的QuerySet或者Model实例对象转换成Python内置的数据类型,从而进一步方便数据和json,xml等格式的数据进行交互。
serializers的作用
1.将queryset与model实例等进行序列化,转化成json格式,返回给用户(api接口)。2.将post与patch/put的上来的数据进行验证。3.对post与patch/put数据进行处理。(后面的内容,将用patch表示put/patch更新,博主认为patch更贴近更新的说法)
简单来说,针对get来说,serializers的作用体现在第一条
但如果是其他请求,serializers能够发挥2,3条的作用!
常用的field12345mobile = serializers.CharField(max_length=11, min_length=11)age = serializers.IntegerField(min_value=1, max_value ...
Django 接入alertmanager自定义路由、自定义模板 按不同类型告警
考虑到 alertmanager的配置文件已达上千行配置,随着后续的要求越来越复杂,告警类别的要求越来越多样化,逐渐诞生了自己写一个告警系统接入alertmanager的想法。
效果图如下:
后端代码models.py
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647from django.db import modelsfrom django.utils.translation import gettext_lazy as _# from django.conf import settingsfrom apps.models import AutoFieldModelTYPE = (("dingtalk", "钉钉"), ("sms", "短信"))class Alerts(AutoFieldModel): STATE = (("pending", & ...
Django ORM 操作
Django ORM操作最常用的ORM方法
方法
描述
all()
返回所有结果
返回QuerySet对象
get(**kwargs)
返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误
返回具体对象
filter(**kwargs)
它包含了与所给筛选条件相匹配的对象
返回QuerySet对象
exclude(**kwargs)
它包含了与所给筛选条件不匹配的对象
返回QuerySet对象
values(*field)
返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
返回一个可迭代的字典序列
values_list(*field)
它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
返回一个可迭代的元祖序列
order_by(*field)
对查询结果排序
返回QuerySet对象
reverse()
对查询结果反向排序,请注意reverse()通常只能在具有已定义 ...
Pycharm配置docker-compose环境
pycharm 配置docker-compose远程环境配置docker-compose12345678910111213141516# 不通的系统 不一样的docker服务位置root@iZj6c3ws85bzpdsezxqua1Z:~# systemctl status docker |grep loaded● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)#修改这个文件 添加一个监听tcp的接口 而不只是socket。/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock/usr/bin/dockerd -H tcp://0.0.0.0:443 -H fd:// --containerd=/run/containerd/containerd.sock# 修改完文件后 ...
TCPDUMP抓包工具
tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上。
不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包。
官网推荐的学习tcpdump的pdf手册: https://jvns.ca/tcpdump-zine.pdf
tcpdump选项1234567891011121314151617181920212223242526272829tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -w file ] [ expression ]抓包选项:-c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。-i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopbac ...
无题
1234567891011121314151617# Dashboard 性能优化文档## 1. 组件异步加载优化### 1.1 异步组件定义使用 Vue 2 的异步组件语法,为每个大型组件添加加载状态:```jsconst InstancePanel = () => ({ component: import(/* webpackChunkName: "dashboard-instance" */ './components/InstancePanel'), loading: { template: '<div class="async-loading"><el-skeleton :rows="3" animated /></div>' }, delay: 200, timeout: 5000})```
webpackChunkName: 指定打包后的文件名
loading: 加载过程中 ...





