django
文章平均质量分 61
pushiqiang
Pythonista
展开
-
django orm实现乐观锁
乐观锁乐观锁是相对悲观锁而言的,乐观锁假设数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回给用户错误的信息,让用户决定如何去做。乐观锁适用于读操作多的场景,这样可以提高程序的吞吐量。乐观锁机制采取了更加宽松的加锁机制,也是为了避免数据库幻读、业务处理时间过长等原因引起数据处理错误的一种机制,但乐观锁不会刻意使用数据库本身的锁机制,而是依据数据本身来保证数据的正确性。乐观并发控制相信事务之间的数据竞争(data race)的概率是比较小的原创 2021-03-27 22:36:33 · 853 阅读 · 0 评论 -
分布式链路追踪系统 - Jaeger在flask/django中的使用
链路追踪分布式链路追踪,也称为分布式请求追踪,是一种用于分析和监视应用程序的方法,特别是那些使用微服务体系结构构建的应用程序; 分布式追踪有助于查明故障发生的位置以及导致性能低下的原因,开发人员可以使用分布式跟踪来帮助调试和优化他们的代码。链路追踪系统核心步骤一般有三个:代码埋点,数据存储、查询展示。在数据采集过程,需要侵入用户代码做埋点,不同系统的API不兼容会导致切换追踪系统需要做很大的改动。为了解决这个问题,诞生了opentracing 规范。 +-------------+ +---原创 2021-03-06 21:35:01 · 2748 阅读 · 0 评论 -
flask/django 动态查询表结构相同表名不同数据的Model实现
1.问题为了控制数据的增长,经常需要分表,数据库中存在多张结构相同,表名相关的表,如: table_201706 table_201707 table_201708怎么通过SQLAlchemy 或者django查询相关的数据表,而不用每次都创建Model呢2.解决方法分别在flask和django下实现,代码如下2.1 flask+sqlalchemy# -*-coding:utf-8cla原创 2017-08-29 10:54:00 · 2859 阅读 · 3 评论 -
Python django文件传输
基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django提供下载功能,如页面数据导出功能(下载动态生成的文件)、先检查用户权限再下载文件等。因此,有必要研究一下文件下载功能在Django中的实现。最简单的文件下载功能的实现将文件流放入HttpResponse对象即可,如:转载 2017-10-09 13:45:05 · 1730 阅读 · 0 评论 -
celery最佳实践
转自:https://my.oschina.net/siddontang/blog/284107作为一个Celery使用重度用户,看到Celery Best Practices这篇文章,不由得菊花一紧。干脆翻译出来,同时也会加入我们项目中celery的实战经验。通常在使用Django的时候,你可能需要执行一些长时间的后台任务,没准你可能需要使用一些能排序的任务队列,那么Celery将会是一个非常好...转载 2018-03-04 20:25:48 · 804 阅读 · 0 评论 -
如何优化 Django REST Framework 的性能?(DRF Developer必看)
现在,Django REST Framework帮助Django开发者给自己的应用开发出简单而强大的标准 REST APIs,而且现在我们已经成功的应用在了一些 Django Web 项目上。然而,看似简单直观的 Django REST Framework 及其嵌套序列化可能会大大降低你的 API 端的性能。你的服务器的其他部分的响应能力也会被某一个低效的 REST API 拖后腿。...转载 2018-03-14 21:20:35 · 5312 阅读 · 1 评论 -
python的unittest单元测试框架断言整理汇总
自动化脚本最重要的是断言,正确设置断言以后才能帮助我们判断测试用例执行结果。在小同事的帮助下,整理了一份比较详细的断言方法。一、先说说unittest常用的断言吧常用的就以下几个,网上一搜一大堆。python版本2.7以上都可以调用了。断言语法解释assertEqual(a, b) 判断a==bassertNotEqual(a, b)判断a!=bassertTrue(x)bool(x) is Tr...转载 2018-03-15 13:38:16 · 495 阅读 · 0 评论 -
Django shell调试models输出的SQL语句
在settings.py里,配置如下logging:LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.Stream...原创 2018-04-10 22:14:28 · 3245 阅读 · 0 评论 -
关于django的prefetch_related优化查询问题
prefetch_related 介绍参见 https://blog.csdn.net/pushiqiang/article/details/79560550在使用中发现,在对内嵌子列表再次进行filter时,prefetch_related会失效models.py定义如下:class Category(Model): """ 种类 &原创 2018-06-13 14:06:43 · 1150 阅读 · 0 评论 -
django orm跨关系查询(跨表,多层查询)
django orm跨关系查询(ManyToManyField,ForeignKey多层查询)Django提供了一种强大而直观的方式来“跟踪”查找中的关系,在后台自动用SQL JOIN处理。 要跨越关系,只需使用跨模型的相关字段的字段名称,用双下划线分隔,直到到达所需的字段。这个例子检索所有Entry对象的 Blog,其name 为:’Beatles Blog’from django....原创 2018-07-20 21:54:38 · 9695 阅读 · 0 评论 -
Django原生sql使用Paginator分页
使用Django肯定经常使用Paginator分页,很便捷。但是他可接受的分页对象必须是django orm的查询集或者list、tuple。当需要使用原生sql查询数据,分页就无法使用Paginator。Paginator其实只需要实现两个方法count和__getitem__就可以自定义一个让Paginator分页器支持的对象,然后就可以使用Paginator分页了,不需要单独对原生sql写...原创 2018-12-19 21:45:08 · 2499 阅读 · 3 评论 -
关于改变 django select_related的join连表方式(inner join/ left join)
关于改变 django select_related的join连表方式(inner join/ left join)django可以使用select_related预加载外键对象,但在没有指定 null=True的情况下,select_related会使用inner join连表查询,这样可能会造成数据缺失(外键对象数据不存在的情况下)eg:author = models.ForeignKe...原创 2019-04-12 13:52:05 · 5264 阅读 · 3 评论 -
Django单元测试类和测试数据回滚
Django单元测试每个测试用例中写入数据库的测试数据在用例执行完后都会被撤销,这是通过事务回滚或者manage.py flush实现的。TestCase与TransactionTestCase都是继承自SimpleTestCase,两者主要的区别在于:TestCase在测试开始时,判断当前连接的数据库是否支持事务特性,如支持,则开启事务操作;在测试结束时,同样判断是否支持事务特性,如支持,...转载 2019-09-26 16:38:39 · 858 阅读 · 0 评论 -
(Django)对object.all()等大量数据的QuerySet限制内存使用
问题在django的使用中,经常会出现大量数据的遍历操作,或者是对大量数据进行遍历迁移跟新,比如for user in User.objects.all(): user.A = user.B User.B = None等种种情况。在本地开发环境中QuerySet对象最初具有非常小的内存占用,随着业务量的增长QuerySet对象在我遍历它们时缓存每个model_instance,all翻译 2017-06-06 18:54:20 · 4101 阅读 · 3 评论 -
django自定义非主键自增字段类型(auto increment field)
1.django自定义字段类型,实现非主键字段的自增# -*- encoding: utf-8 -*-from django.db.models.fields import Field, IntegerFieldfrom django.core import checks, exceptionsfrom django.utils.translation import ugettext_lazy原创 2017-08-27 17:28:15 · 10646 阅读 · 0 评论 -
django signal and contenttypes初探,可用于好友最新动态,新鲜事,消息通知等
django signal and contenttypes 信号和内容类型 contenttypes framework初探,可用于好友最新动态,新鲜事,消息通知等原创 2016-02-11 22:52:13 · 2392 阅读 · 0 评论 -
django使用inclusion_tag标签封装数据字典
Django_DictSelect使用inclusion_tag标签封装数据字典最近用java做一个评估系统时,填报系统的前台页面经常用到数据字典(模板标签封装select),于是产生了在django系统下实现这个功能的想法,原理很简单,使用django的inclusion_tag封装<select></select>原创 2016-03-30 00:48:29 · 1574 阅读 · 0 评论 -
基于 Python django 的小型论坛系统
django_forumThis is a small and simple forum which uses the Django Framework (written in Python language).这是一个基于django的小型论坛系统这是个基于 Python django 的小型论坛系统本系统实现了一般论坛的主要功能,包括发帖,评论,评论回复,评论通知,加好友,好友消息,消息通知,原创 2016-02-11 22:18:07 · 11855 阅读 · 0 评论 -
Django数据库连接池(mysql)
都知道django每次请求都会连接数据库和释放数据库连接。Django为每个请求使用新的数据库连接。一开始这个方法行得通。然而随着服务器上的负载的增加,创建/销毁连接数据库开始花大量的时间。要避免这个,你可以使用数据库连接池,这里使用SQLAlchemy的连接池。使Django持久化数据库连接。但这种方法会改变django的代码。对框架有侵入方法 1实现方法如下: 把django/db/bac...............原创 2016-04-14 16:40:08 · 14402 阅读 · 0 评论 -
django实现qq一键登录(qq互联)
django实现qq一键登录原创 2016-07-03 16:37:15 · 2229 阅读 · 0 评论 -
在Django框架中进行字符串翻译
使用函数 ugettext() 来指定一个翻译字符串。 作为惯例,使用短别名 _ 来引入这个函数以节省键入时间.在下面这个例子中,文本 "Welcome to my site" 被标记为待翻译字符串:?12345fromdjango.utils.translation import转载 2016-10-08 23:07:55 · 1168 阅读 · 0 评论 -
django rest framework图片上传测试,以及drf测试所踩的一些坑
django rest framework图片上传测试models.pyclass Dish(models.Model): name = models.CharField(_(u'name'), max_length=100) photo = ThumbnailerImageField(upload_to=dish_directory_path, null=True, blank=T原创 2016-09-30 13:13:39 · 10037 阅读 · 0 评论 -
支付宝即时到帐接口的python实现,示例采用django框架
因工作需要研究了支付宝即时到帐接口,并成功应用到网站上,把过程拿出来分享。即时到帐只是支付宝众多商家服务中的一个,表示客户付款,客户用支付宝付款,支付宝收到款项后,马上通知你,并且此笔款项与交易脱离关系,商家可以马上使用。即时到帐只对企业客户服务,注册成功企业账号以后,申请签约即时到帐产品,大约3-5个工作日后,签约成功,可以马上进入集成产品阶段。转载 2016-10-26 20:48:52 · 2524 阅读 · 5 评论 -
django admin添加数据自动记录user到表中的实现
1.需求:在后台添加一条数据的同时要把添加者记录到表中。2.models.pyclass Setting(models.Model): ... user = models.CharField(max_length=50, blank=True, help_text=u"添加者") ...3.admin.py@register(Setting)cla原创 2016-12-19 19:26:03 · 4182 阅读 · 0 评论 -
关于django-channels的token认证实现
django-channels只支持基于session的认证,在实际使用中可能需要基于token或者jwt的认证。 参照 https://www.machinalis.com/blog/jwt-django-channels/ 实现基于django token认证。原创 2017-01-21 22:29:35 · 4188 阅读 · 1 评论 -
关于在uwsgi server中出现cassandra超时问题的解决
关于在uwsgi server中出现cassandra超时的问题ref:http://stackoverflow.com/questions/30846525/cassandra-rises-operation-time-out-in-uwsgi-server在nginx+uwsgi+cassandra的环境下,出现了uwsgi超时问题,解决方法如下:修改wsgi.py文件"""WSGI conf翻译 2017-04-02 20:58:35 · 1135 阅读 · 0 评论 -
使用信号监控 Django 模型对象字段值的变化
Django 信号 (Signals) 的功能类似于 WordPress 的动作 (action),用于为项目全局增加事件的广播 (dispatch) 与接收 (receive) 机制。其中,灵活使用其内置的模型信号 (Model Signals) 的接收功能就可以监控大部分模型对象 (Model instances) 的变化。因为不需要修改模型本身的代码,在进行跨应用 (App) 监控时有低耦合...转载 2017-07-11 13:45:42 · 2673 阅读 · 1 评论 -
关于django model postgres的json字段编码问题
django model的json字段的编码器不能有效编码诸如uuid,datetime等数据类型,当直接存储此类型的对象到json字段中为抛出编码异常,这时可以通过JSONField字段的encoder参数指定json编码器,这里直接使用django rest framework的 JSONEncoderfrom django.contrib.postgres.fields原创 2017-07-10 09:15:35 · 1506 阅读 · 0 评论 -
django-rest-swagger的优化使用
django-rest-swagger的优化使用requirements.txtdjango==1.10.5djangorestframework==3.5.3django-rest-swagger==2.1.1参考英文文档:http://django-rest-swagger.readthedocs.io/en/latest/使用swagger工具结合Django-rest-framework进行原创 2017-06-12 18:44:33 · 6673 阅读 · 2 评论 -
Django单元测试基础知识
关于django的单元测试,需要知道的是对于每一个测试方法都会将setUp()和tearDown()方法执行一遍会单独新建一个测试数据库来进行数据库的操作方面的测试,默认在测试完成后销毁。在测试方法中对数据库进行增删操作,最后都会被清除。也就是说,在test_add中插入的数据,在test_add测试结束后插入的数据会被清除。django单元测试时为了模拟生产环境,会修改settings中原创 2017-06-14 11:54:19 · 1459 阅读 · 0 评论 -
django学习之 pdf报表(表格)生成
pdf_report_printing django学习之 pdf报表(表格)生成新手之作,大神勿喷pdf表格生成采用reportlab库,ubuntu12以后默认安装有(import reportlab 查看是否安装)通过重写ListView类视图的post方法实现对post请求的相应前台post请求,后台实时查询数据库生成pdf表格返回给前台保存pyth原创 2016-02-11 22:32:08 · 3875 阅读 · 2 评论