【讲着玩】django+restframework
文章平均质量分 67
本专栏主要做一些基于django restframework框架下、前后端分离场景下,如何使用DRF做后台开发、分享
曲鸟
测试效能领域学习工作多年,主导过多个性能、功能、UI、接口测试平台建设,在不知不觉中成为全栈开发。
欢迎交流学习。
展开
-
Django中的事务介绍
在Django中,它的 默事务行为是自动提交。除非事务正在执行,每个查询将会马上自动提交到数据库, 例如:如果没有手动设置事务,那么这两条代码在执行完成后就会马上提交到数据库中进行保存,Django 自动使用事务或还原点,以确保需多次查询的 ORM 操作的一致性,特别是 delete() 和 update() 操作。通过django手动创建事务的方式一般为两种:装饰器和:装饰器:with语句:需要注意的是当事务回滚时,模型的属性需要手动恢复。例如下面的代码,的初始值是.我们设置了然后进行了保存操作原创 2022-12-28 09:17:46 · 2949 阅读 · 5 评论 -
猿创征文|python gevent 执行MySQLdb/mysqlclient连接卡住解决方案
为了提高Django的并发性能,所以使用组合来启动Django,但在过程中遇到了一个问题,之前能正常使用的接口按新方法部署后一直在报超时,后面排查发现当项目代码执行到使用Mysqlclient创建数据库连接时就会卡住。网上找了一圈发现了一个解决方案:但使用时会报错,方法不好使,后面查阅pymysql发现作者移除了上述的方法:移除的原因作者也做了解释:一句话概括:waiter不能完全解决gevent阻塞的问题,所以对此建议使用pymysql。...............原创 2022-08-30 10:35:19 · 3648 阅读 · 14 评论 -
【Django】使用requests并通过ORM修改数据操作的一次脱坑记录
最近在写接口自动化的测试平台,在请求接口回填响应头数据的这一步遇到了一个小问题,想要通过requests库自带的获取响应头的方法(r.headers),然后拿到值后传给前端进行展示,展示效果如下:开始调试时一切都好好的,但为了将该数据做保存记录的时候出了一些问题,报了一个不常见的错误:第一反应是django序列化相关的的问题,按报错日志追溯到是代码中通过ORM批量创建数据入库的这一步报错,分析了一下还是没有啥头绪:打了断点、加注释调试也没发现什么结果,也没有怀疑是因为增加了获取响应h原创 2022-03-24 17:47:44 · 2727 阅读 · 1 评论 -
django批量插入存在表关联的多表数据应该怎么提高性能呢
一、前言最近粉丝遇到了一个问题:需要往数据库A表和B表(B表存在字段关联A表id的数据)一次性插入1000条数据。他通过先插一条A表数据并获取它的id再来插入B表数据并进行关联。实际运行效果可想而知,速度是非常慢的。在django中有个BULK_CREATE方法可以实现批量插入数据的操作,那位小伙伴也尝试了,但由于这些数据是同时插入的,所以通过ORM插入后返回的属性没有数据的id的。二、解决方案对于这种场景我们可以手动的指定数据的id就可以解决这个问题了。当我们要插入数据的时候,先删除表中原来的数原创 2021-12-12 15:12:37 · 4358 阅读 · 14 评论 -
Django的ManyToManyField(多对多)讲解
Django的ManyToMany详解原创 2021-11-19 09:51:35 · 17471 阅读 · 19 评论 -
Django3.2新增数据库函数-JsonObject的使用
一、前言最近在项目中有个接口需要将查询的数据中部分字段合并为一个字典再返回。之前的做法要么是先通过ORM查出数据自己单独再做处理,要么是通过数据库函数Concat将这些字段拼接为一个Json字符串进行查询,后续再做处理。跟第一种的处理方法差不多,两个都很麻烦。但在django3.2版本,它们新增了专门的数据库函数JsonObject来处理这种需求了。二、JSONObject说明获取键值对列表并返回包含这些对的 JSON 对象。例如有如下表结构,表模型名称为Student:student 表原创 2021-11-04 10:03:59 · 5403 阅读 · 13 评论 -
【DRF】django restframework如何使用redis来做token认证
这里写目录标题一、前言二、详解1. 安装redis并启动2. 安装django-redis库3. 配置redis连接3. 重写token方法一、前言restframework有自己很方便的一套认证、权限体系。官方文档(tokenauthentication)官方文档的token 是基于数据库中的authtoken_token表来做的有时候在后续接口中需要使用的用户信息过多时,频繁、高并发下的查询数据库会带来比较大的性能消耗。这个时候我们就需要通过redis来做用户认证,并存储一些用户信息在其中原创 2021-10-16 09:31:54 · 13822 阅读 · 22 评论 -
Django的Migrate和Makemigrations讲解
一、前言本专栏主要分享一些Django restframework相关的知识,主要侧重于前后端分离下,如何使用DRF来做后台开发二、migrate和makemigrations详解和实操当我们在django中添加或修改了数据库model后,一般需要执行makemigrations、migrate把我们的model类生成相应的数据库表,或修改对应的表结构。这是非常方便的。但我们在实际使用中执行这两个命令经常会出现意向不到的报错。下面为你详细讲解这两个命令,让你更从容的使用他们!1.makemigra原创 2021-09-10 09:48:39 · 13723 阅读 · 16 评论 -
django restframework,多重排序的url传参写法
当查询的数据需用多重排序的时候,这时URL的ordering传参写法应该为:**?ordering=-year,-month,-total_code**,es6可以这样写:`&ordering=${['-year', '-month', '-total_code']}`完整的模板:**http://127.0.0.1:9001/api-list/?&ordering=-year,-month,-total_code*原创 2021-03-26 16:56:25 · 614 阅读 · 1 评论