Django
orangleliu
快乐编程
展开
-
Django unittest 设置跳过某些case
按理说unittest 中是不应该测试那种外部依赖很强的用例,但是呢,有时候有些接口总是调试好之后怕忘了,就写了一些简单的测试case,想要通过在settings中增加一些配置来开启和关闭这些case,这样的话就可以在正常跑单元测试的时候隔离开这些不怎么正规的测试用例。环境 * Django1.8 * Python2.7.xunittest 中提供了这么一个装饰器,用起来也很简单。这里是一原创 2017-09-05 18:33:47 · 1602 阅读 · 0 评论 -
优化Django ORM中的性能问题
原文地址 Solving Performance Problems in the Django ORMDjango是个好工具,使用的很广泛。 在应用比较小的时候,会觉得它很快,但是随着应用复杂和壮大,就显得没那么高效了。当你了解所用的Web框架一些内部机制之后,才能写成比较高效的代码。怎么查问题Web系统是个挺复杂的玩意,有时候有点无从下手哈。可以采用 自底向上 的顺序,从数据存储一直到数据展现,翻译 2017-02-25 18:46:11 · 11421 阅读 · 0 评论 -
Django 缓存模块 page_cache 源码阅读
Django page_cache 源码阅读笔记标签(空格分隔): django--> Django cache中比较常用的有 cache_page 这么个 decorators, 下面就根据请求流程,结合源码来说说它是怎么工作的?版本是django1.8,不同版本可能函数等会变化,逻辑应该类似。cache_page的功能从逻辑上来说 cache_page 的功能非常简单,无非就是针对被装原创 2017-01-12 01:27:50 · 1368 阅读 · 0 评论 -
Django中过期@cache_page中缓存的views数据
django的缓存系统中,cache_page 这个装饰器非常好用,只要添加一个装饰器就可以缓存views的响应内容,但是django没有提供过期这个views缓存数据的功能。@cache_page(60*10)def blog_post(request): ...上面的代码是缓存这个请求响应体10分钟,如果有数据刚缓存2分钟,post中的内容已经更新了,我想要过期这个当前的缓存怎么做呢原创 2017-01-13 15:28:18 · 3786 阅读 · 0 评论 -
[django1.6]跑批任务错误(2006, 'MySQL server has gone away')
有个django的定时任务,调用django的orm来对数据库进行数据处理。 在交互环境下直接启动pyhton脚本没有问题,放在定时任务中时候,总是出现(2006, 'MySQL server has gone away')的错误,开始以为是定时框架外部调用的问题,但是后来想想也不合理,为啥直接在shell中调用就没错呢,想到django1.6的一些数据库连接的新属性(原创 2014-11-25 13:45:02 · 10627 阅读 · 1 评论 -
[django]django-debug-tools
django-debug-tools 使用用django开发很快也很容易,但是很多时候我们的经验并不是很足,就会给自己挖下很多坑,不管是性能问题,还是开发语言使用技巧问题都会给应用的稳定带来危害, 开发之后的调试和调优就显得很重要,今天就尝试使用django-debug-toolbar来给我们的开发增加更多的调试和监控。之前只是听说过,没有具体应用过。我这里是pytho原创 2014-10-24 19:01:55 · 2602 阅读 · 0 评论 -
【Django】 gunicorn部署纪要
使用Gunicorn 来部署Django应用, 没有一步一步写怎么操作,简单记录下重要的点,方面以后查阅。 主要的方式还是Nginx反向代理到Gunicorn, Gunicorn wsgi来启动Django。特点Gunicorn是基于prefork模式的Python wsgi应用服务器,支持 Unix like的系统 采用epoll (Linux下) 非阻塞网络I/O 模型多种Worker原创 2016-03-21 23:28:25 · 8834 阅读 · 0 评论 -
【uWSGI】实战之Django配置经验
uWSGI 是应用服务器,实现了uwsgi, wsgi等协议,可以运行wsgi 应用uwsgi 是协议名Django配置下面是自己经常用的一个配置模板,基于1.9以上的版本使用的, 主要基于django应用[uwsgi]djangoproject=/home/www/portalchdir=%(djangoproject)#virtualenv = /home/robc/.virtuale原创 2016-03-02 17:20:39 · 3995 阅读 · 0 评论 -
【uWSGI】 实战之操作经验
以下是uwsgi版本为2.0以上,uwsgi的启动可以把参数加载命令行中,也可以是配置文件 .ini, .xml, .yaml 配置文件中,个人用的比较多得是 .ini 文件。下面总结下自己操作和使用经验,基本都是django部署。启动,停止,重载前提是在配置中制定了pid文件,这里使用 .ini配置文件, pid文件叫 uwsgi.pid. 可以在此基础上自己写个启停脚本或者系统服务脚本。启动u原创 2015-09-14 11:48:29 · 8209 阅读 · 1 评论 -
【测试】Gunicorn , uWSGI同步异步测试以及应用场景总结
最近使用uwsgi出了一些问题,于是测试下Gunicorn测试对比下环境一颗cpu 1g内存 Centos系统 Django作为后端应用,Gunicorn默认模式和异步模式,响应基本是无阻塞类型测试的request是一个加密操作,对url中的几个参数做一个ase加密说明:下面的模拟阻塞模式,类似于你的请求中有很多调用第三方api的场景,因为网络延迟导致响应比较长测试命令ab -n 1000原创 2015-10-20 12:24:06 · 9709 阅读 · 2 评论 -
[Django高级]理解django中的中间件机制和执行顺序
原文来自 Understanding Django Middlewares, 这篇文章从整体上介绍了django中中间件定义,作用,和怎么样自己写中间件 –orangleliu。注:middleware 和中间件在下面文章中含义相同,不完全翻译了假设你已经阅读了 Django官方文档middleware部分 . 下面会尽可能详尽的介绍文档中提到的知识,但是还是希望你熟悉 middleware翻译 2015-09-09 15:40:54 · 14286 阅读 · 4 评论 -
【Django】优化小技巧之清除过期session
事情是这样的,大概也就几万注册用户的站点(使用django1.6), session 存储在关系型数据库,这次上线之后发现session表几十万数据了,过期session没有被自动删除思考官网 session文档django的 session是可以存储在多种介质下的,db,文件,cache(缓存也可以定义)都行,也可以使用cookie base的session默认的序列化方式是BaseJSO原创 2015-09-09 11:31:49 · 8792 阅读 · 2 评论 -
nginx+uwsgi+django 部署原理
python开发群里经常有同学问 nginx+uwsgi+django 着了教程部署,但是不知道他们之间怎么样的关系,于是我就google到了一个让我看起来很认同的图,大家看了也比较认同,于是就分享出来下。这是这张图的出处 点击原创 2015-07-27 10:17:53 · 3335 阅读 · 0 评论 -
django-debug-tools 使用
用django开发很快也很容易,但是很多时候我们的经验并不是很足,就会给自己挖下很多坑,不管是性能问题,还是开发语言使用技巧问题都会给应用的稳定带来危害, 开发之后的调试和调优就显得很重要,今天就尝试使用django-debug-toolbar来给我们的开发增加更多的调试和监控。之前只是听说过,没有具体应用过。我这里是python1.6。 1.7的配置有点小改动,具体看文档。安装使用pip安装p原创 2016-05-27 10:00:24 · 5066 阅读 · 0 评论 -
【uWSGI】 listen queue of socket (fd: 3) 错误分析
现在django的应用基本都是使用uwsgi来部署,类似下面 listen queue of socket "127.0.0.1:9001" (fd: 3) 的错误出现过2次,下面说下这两次错误出现的解决的过程。出错场景centos 6.6uwsgi2.0nginx1.6错误日志截取Tue Jun 2 17:33:27 2015 - *** uWSGI listen queue of s原创 2015-09-17 22:47:18 · 10791 阅读 · 0 评论 -
[django]项目打包构建
django项目的结构大体上都是类似,打包主要的功能就是把一些不需要部署的文件剔除,把需要部署的文件直接压缩打包。 这里还想集成一个配置文件模板生成配置文件的过程,或者写一个配置文件生成的工具,不用每次都复制修改,容易出错。 下面是orangleliu君的一个小实验,仅供参考和相互交流。这是项目的文件结构。官方文档的教程setuptools模块setuptools应该是对标准库中的setup原创 2015-06-23 11:50:01 · 13127 阅读 · 1 评论 -
Django实践之配置文件
一个django项目通常有几个环境,开发环境,测试环境,单元测试环境,以及生产环境,这里每一种环境的settings配置都有一些区别。默认的settings是一个py文件,这里采用一个模块来组织。目标 - 每个环境不冲突 - git中不冲突配置管理Django启动时候指定settings一般有2中形式采用 DJANGO_SETTINGS_MODULE 环境变量,例如 export DJANG原创 2017-08-11 16:43:00 · 2588 阅读 · 0 评论 -
django views中 request, response的常用操作
以问题的形式记录一些请求和响应的常见写法,django1.8为例子。request获取post请求中的json数据def hello(request): data = json.loads(request.body) ...json格式还有一些 非表单序列化 的格式,都可以从 request.body 中获取请求体中的数据,对于ajax请求可以使用 request.is_aja原创 2017-07-17 14:03:24 · 4084 阅读 · 0 评论 -
【Django】源码分析之session生命周期
Web应用中session是至关重要的一个概念,有了它http就有了状态。 我们才能方面的开发出各种基于用户的应用。说到session 不得不说cookies,不过cookies在服务端基本没有太多需要实现的逻辑,基本就是存取和报文格式之类,所以不做研究。 (下面是根据django1.8代码分析)session在django源码中的主要配置(django/contrib/sessions),主要的原创 2017-07-13 10:52:59 · 3307 阅读 · 1 评论 -
Django 禁用Migrations 给 Unit Test 提速
文章地址:https://simpleisbetterthancomplex.com/tips/2016/08/19/django-tip-12-disabling-migrations-to-speed-up-unit-tests.htmlDjango 框架提供了 test 接口,很简单,自从1.7版本之后添加了 migrations 特性,默认的 test 命令会在每次执行的时候进行 migr原创 2017-06-08 12:51:31 · 1678 阅读 · 0 评论 -
[Django] 单元测试小记
从前很少写单元测试了,特别是web应用。最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合理,单元测试写起来就麻烦的多呀。公司的项目一直都是用Django,所以写点django单元测试的小总结,记录为主,备查。测试的场景框架Django1.8 测试工具 unittest, 要记得给test设置一个独特的settings。测试请求 也就是测试整原创 2016-07-18 19:30:06 · 7433 阅读 · 2 评论 -
Django template 中优雅的自定义权限过滤filter
由于业务原因需要在Django模版中自定义一种权限过滤方式,作用类似于django auth系统中提供的 permissions filter.下面是我看到一种写法,实现起来比较简单,用起来也比较简单 django-user-permissions-in-your-templatesfilter部分代码from django import templateregister = template.L原创 2017-05-10 10:22:06 · 2770 阅读 · 0 评论 -
Django model中设置多个字段联合唯一约束
使用Django中遇到这样一个需求,对一个表的几个字段做 联合唯一索引,例如学生表中 姓名和班级 2个字段在一起表示一个唯一记录。Django中model部分的写法, 参见 unique-together 部分文档。class MyModel(models.Model): field1 = models.CharField(max_length=50) field2 = models.C原创 2017-05-08 10:39:19 · 20904 阅读 · 1 评论 -
[django]禁用 Django Rest Framework 的 Browsable API
如果您用django来开发 restful 接口一定听说过或者使用过 Django Rest Framework 这个项目(简称DRF), 它可以帮助django用户方面快捷的开发 restful api,并且提供了完善的文档。 DRF提供了一个非常好用的功能,叫做 Browsable API ,也就是说在浏览器中访问某个接口,就会自动获取到这个借口文档化的信息,非常方面接口查询,使用。开发环境或原创 2017-05-25 10:12:35 · 3082 阅读 · 0 评论 -
[Django]几种重定向的方式
这里使用的是django1.5需求: 有一个界面A,其中有一个form B, 前台提交B之后,后台保存数据之后,返回界面A,如果保存失败需要在A界面提示错误。这里就需要后台的重定向,而且需要可以带着参数,也就是error message这里收集了几种方法,简答说下需要那些包,怎么简单使用。原创 2014-08-02 14:13:39 · 37489 阅读 · 1 评论 -
[Django1.6]The MEDIA_ROOT and STATIC_ROOT settings must different 解决
项目中有个图片上传的功能,当时为了简单就把上传路径跟原创 2014-10-28 16:39:41 · 2915 阅读 · 1 评论 -
[Django]gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
因为是1.3风格的目录结构的django项目,其实用的是django1.6 写法上有点特殊gunicorn wsgi:application -b 0.0.0.0:8000gunicorn -b 0.0.0.0:8000 --workers=5 wsgi gunicorn -b 0.0.0.0:8000 --workers=5 --log-file error.log wsg原创 2014-11-07 17:16:59 · 14745 阅读 · 0 评论 -
[uwsgi]使用建议(类似最佳实践)
看了下uwsgi官方的一个使用建议,之前都是直接参考了下django文档中那个比较简单的配置或者就写了个能运行的配置,么有注意很多细节问题,这里学习下,把需要的配置添加到项目配置中。1 http and http-socket 是2个不同的配置项,http直接使用http协议,可以直接作为web服务器来使用,socekt是用来给web服务器来upstream的2 T原创 2014-12-06 23:08:51 · 6066 阅读 · 0 评论 -
[django]用日期来查询datetime类型字段
有一个model的字段是 DateTimeField,我现在要具体查询某一天date的数据,应该怎么用orm来查询呢?指定年月日YourModel.objects.filter(datetime_published__year='2008', datetime_published__month='03',原创 2015-05-19 11:32:14 · 12817 阅读 · 0 评论 -
[django]添加自定义template filter标签
看文档templatetag 直接放在app下的templatetag 文件夹下就好,这里想放到一个公共的目录下,然后写下简单的自定义tag的模板。 django1.6创建在项目目录下建立如下的文件夹结构templatetags/ __init__.py eryatags.pyeryatags.py# -*- encoding=utf-8 -*-from django impo原创 2015-05-15 12:17:52 · 5202 阅读 · 0 评论 -
[Django]外部调用django orm
有时候需要做一些一次性的测试,需要用到业务数据,用单元测试不合适,每次启动django又觉得太麻烦。可以外部调用django的orm来完成一些测试和小工具的编写。写一个小样留作备用原创 2014-03-21 17:13:41 · 5698 阅读 · 0 评论 -
[django]启动之后所有请求都是500错误
[django]启动之后所有请求都是500错误原创 2014-02-11 10:57:31 · 7412 阅读 · 2 评论 -
[django-celery]监控管理指南
django-celery是一个django框架的插件,用来做消息队列处理,可以搭配rabbitmq来做异步消息处理等。原文地址: http://docs.celeryproject.org/en/3.0/userguide/monitoring.html celery3 和3.1的版本配置和使用有些不同,这篇文章主要说的是3.0版本。翻译 2014-01-02 17:17:08 · 8413 阅读 · 0 评论 -
[django1.4] admin中添加富文本编辑器tinymce
djang1.4 djangoadmin中添加富文本编辑器tinymce小记写了一个博客小应用,但是后台添加博客的时候一点样式也没有,每次都是自己写html标签也不太好,于是就找了一个富文本编辑器添加到其中。这是使用的是tinymce git的地址是:https://github.com/aljosa/django-tinymce首先是安装:sodu install原创 2013-05-15 17:32:06 · 2822 阅读 · 0 评论 -
[Django1.5]two-scoops-django-best-practics 笔记四
chapter 7 Function-and Class-Based Views Django1.5 有这两种模式function-based views FBVsclass-based views CBVs 什么时候使用FBVs或者CBVs? Keep view Logic out of URLconfs *views模块应该包含view逻辑*UR原创 2013-05-10 23:34:12 · 1615 阅读 · 0 评论 -
[Django1.5]two-scoops-django-best-practices 笔记三
chapter 6 数据库/模型 最佳实践:模型是很多Django项目的基础。这是我们挑选的用于模型的第三方包*South 用来做数据库迁移,这是一个很好用很常见的工具*django-model-utils to handle common patterns like TimeStampedModel*django-extensions 它有一个强有里的shel原创 2013-05-09 12:20:26 · 1707 阅读 · 0 评论 -
[Django1.5]two-scoops-django-best-practices 笔记二
chapter 3django工程的布局 / / /Top level:Repository Root最上层是工程根目录的绝对路径这里还经常有的文件是:READMEdoc/design/.gitignorerequirement.txtSecond level:Django project root这里通常原创 2013-05-08 22:52:52 · 1744 阅读 · 0 评论 -
[Django1.5] two-scoops-django-best-practices 笔记一
two-scoops-django-best-practices notes:chapter 1 code style:*Avoid abbreviating(缩写) variable names*Write out your function argument names*Document you classes and methods*Refactor原创 2013-05-08 19:43:38 · 1537 阅读 · 0 评论 -
[Django1.5]TemplateSyntaxError: 'comments' is not a valid tag library错误
在模板中使用 {% load comments %}时候出现 TemplateSyntaxError: 'comments' is not a valid tag library: Template library comments not found, tried django.templatetags.comments,django.contrib.staticfiles.templa原创 2013-05-06 17:11:22 · 4229 阅读 · 0 评论 -
[Django1.5]'url' requires a non-empty first argument. 错误
在django1.4 中这么引用url是没错的 {{ blog.caption }}但是在1.5中就会有如下错误'url' requires a non-empty first argument. The syntax changed in Django 1.5, see the docs.解决方法是"{% url detailblog blog.id %}"变为"原创 2013-05-06 15:22:46 · 2370 阅读 · 0 评论