- 浏览: 2654981 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
由于需要解决django template问题,研究了django template结构
一、django tempate 结构
django.tempate是django 模板的封装,主要由两部分构成:
- loader.py 总控入口
- loaders django自定义的一系列Loader,如django.template.loaders.filesystem.Loader
loader.py一些重要的类或者方法
def render_to_string(template_name, dictionary=None, context_instance=None) 入口 ,被shortcuts调用
def get_template(template_name) 被render_to_string调用 ,调用find_template
def find_template(name,dirs=None) 通过settings.TEMPLATE_LOADERS 加载template,被get_template调用
find_template_loader(loader) 通过className实例化loader,被 find_template调用,只要一个名叫load_template_source方法即可。
render_to_string()是template的入口:
def render_to_response(*args, **kwargs): """ Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments. """ httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)} return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
def render_to_string(template_name, dictionary=None, context_instance=None): """ Loads the given template_name and renders it with the given dictionary as context. The template_name may be a string to load a single template using get_template, or it may be a tuple to use select_template to find one of the templates in the list. Returns a string. """ dictionary = dictionary or {} if isinstance(template_name, (list, tuple)): t = select_template(template_name) else: t = get_template(template_name) if not context_instance: return t.render(Context(dictionary)) # Add the dictionary to the context stack, ensuring it gets removed again # to keep the context_instance in the same state it started in. context_instance.update(dictionary) try: return t.render(context_instance) finally: context_instance.pop()
二、 django Template 的性能
django的Template性能非常差,就这么一段code, django 的template能跑10ms(而且blog.cached_tags is None)
{% if blog.cached_tags %} {% if blog.is_buyable %} {% for tag in blog.cached_tags %} <a href="/blogs/item/{{ tag.name|urlencode }}/"> {{ tag.name }} {% if user == sender or user.is_staff %} <u title="删除标签"> </u> {% endif %} </a> {% endfor %} {% else %} {% for tag in blog.cached_tags %} <a href="/blogs/tag/{{ tag.name|urlencode }}/"> {{ tag.name }} {% if user == sender or user.is_staff %} <u title="删除标签"> </u> {% endif %} </a> {% endfor %} {% endif %} {% else %} {% if request.user != blog.sender and not request.user.is_staff %} <b>还没有标签</b> {% endif %} {% endif %}
网上有一份python 各template的测试结果:
funcname: render_django used 0.071762
funcname: render_webpy used 0.015729
funcname: render_bottle used 0.008752
funcname: render_tornado used 0.005675
funcname: render_jinja2 used 0.002073
funcname: render_mako used 0.001627
funcname: render_cheetah used 0.000014
点评一下吧。django就是个渣,不多废话了。webpy的代码很简洁,可惜速度太慢了。bottle看起来快一点,不过也没有多出彩。tornado
本身速度很快,不过模板——也就是如此吧。真的值得一用的,只有jinja2,mako,cheetah三个。速度都小于了5ms,单核每秒可以生成
200个页面,16核机器上大概就能跑到3000req/s,性能比较高。jinja2的速度比较折衷,配置灵活,语法类似django是他的优点。而且
不得不说,jinja2的文档真的很不错。mako的速度比jinja2略快,模板写起来也很舒服。文档略凌乱,可以接受。cheetah的速度——已经
不像是模板了好吧。
发表评论
-
django 处理unicode编码
2013-04-28 22:18 2822django.util.encoding.py impor ... -
django lazy user实现
2013-04-26 15:48 1215代码如下: from people.service ... -
django db models探索
2013-03-24 16:04 1794一、django db models结构 django ... -
django + sqlalchemy pool 测试
2013-03-15 22:59 13801.修改gevent /duitang/dist/sys ... -
django db backends探索
2012-12-29 18:20 2471由于需要解决django db长连接的问题,最近看了看djan ... -
MySQL Connection Pooling with Django and SQLAlchemy
2012-12-28 21:54 0Here's a quick and dirty recipe ... -
Launching a High Performance Django Site
2012-12-28 21:39 1069Are the brakes on your Django a ... -
django 性能优化
2012-12-28 17:24 2119django默认的一些系统性能低下,无法支撑大流量请求,一些优 ... -
让Django支持数据库长连接
2012-12-28 17:05 1804原文:http://www.cnblogs.com ... -
django 的BaseMemcachedCache线程安全问题
2012-10-21 15:11 1120注意,django.core.cache.backends.m ... -
django request 获取请求的URL
2012-10-17 17:17 22080request.get_host() 获取请求地址 ... -
django user model
2012-09-12 22:01 937http://stackoverflow.com/questi ... -
python uwsgi
2012-07-30 17:21 0之前的文章已经提到了 django+fastcgi的运行并 ... -
在生产系统使用Tornado WebServer来代替FastCGI加速你的Django应用
2012-07-30 17:19 5原文:http://www.cnblogs.com/Alexa ... -
python web.py
2012-07-30 17:04 937使用web.py能快速启动一个web服务。 # -*- c ... -
浅析 Django runserver 的 autoreload 功能
2012-07-30 16:53 5144浅析 Django runserver 的 auto ... -
django auth_user.get_profile
2012-07-24 12:29 2619django 对 auth_user 提供了扩展get_pro ... -
django + postfix 搭建邮件服务
2012-07-23 14:48 1390email 配置: SERVER_EMAIL = &q ... -
django 中文问题
2012-07-17 16:45 1596好像每个国外的开源框架都会遇到中文问题,今天又被django ... -
django 的关联ID
2012-07-16 17:52 1027blog.album_id 是直接取外键 blog.album ...
相关推荐
**Django 3 模板系统详解** Django是一个用Python编写的高级Web框架,它遵循“DRY(Don't Repeat Yourself)”原则,旨在简化Web应用的开发过程。...在实践中不断探索,将有助于你快速成长为一名熟练的Django开发者。
《深入理解Python库:Django Template Engines 1.2.29》 在Python的世界里,Django框架以其高效、灵活和强大的特性深受开发者喜爱。其中,Django的模板引擎是其核心组件之一,用于处理HTML和其他静态内容的动态部分...
5. **模板系统**:探索HTML模板文件,学习如何利用Django模板语言(Django Template Language, DTL)进行动态内容渲染。 6. **表单处理**:理解如何定义表单类,使用`forms.py`,以及如何在视图中处理用户提交的...
Django是用Python编写的,遵循MVT(Model-View-Template)架构模式。这意味着在开发过程中,你可以清晰地分离业务逻辑、数据模型和用户界面。在这个课件中,你将学习到如何创建一个Django项目和应用,以及如何定义...
**Django Python3 实例与MySQL数据库的整合** 在Python Web开发领域,Django是一个非常...通过阅读`运行前必看.txt`,运行并调试`django.sql`中的SQL,以及探索`mysite`目录,你可以逐步掌握Django与MySQL的配合使用。
【Python Django入门教程】 Django是一个基于Python的开源Web应用框架,遵循MVC(模型-视图-控制器)设计模式,但在Django...通过学习本教程,你将能够掌握Django的基本概念和流程,进一步深入探索这个强大的Web框架。
《Django入门与实践》这份资源是一份针对初学者的Python Web开发教程,重点介绍了Django框架的基础知识和实际应用技巧。Django是Python编程语言中...在实践中不断探索,你将发现Django是一个强大而灵活的Web开发工具。
《深入探索Django框架:2019版千锋Django源码与笔记解析》 Django,作为Python世界中最受欢迎的Web开发框架之一,以其高效、简洁和强大的功能著称。2019版千锋Django的源码与笔记资源,为初学者和进阶者提供了一个...
**Django小项目超简单贼适合新手** 在Python Web开发领域,...在学习过程中,不断探索Django的高级特性,如用户认证、表单处理、中间件、自定义管理命令等,会让你的技能更加全面。祝你在Django的世界里学习愉快!
**Django基础** Django是Python编程语言中的一款强大、高效且流行的Web开发框架,它遵循模型-视图-...继续探索Django的高级特性,如中间件、缓存、认证和权限控制,以及更多功能,你将成为一名熟练的Django开发者。
它的主要特点是模型-视图-控制器(MVC)架构模式的实现,即Model、View和Template,以及管理后台(Admin)。Django提供了丰富的内置功能,如ORM(对象关系映射)、数据库迁移工具、身份验证和授权系统、URL路由、...
Django是Python编程语言中的一个强大且流行的Web框架,它为开发者提供了构建高效、安全、可扩展的...在学习过程中,不断实践和探索,你会发现Django是一个强大且富有表现力的工具,能够助你轻松构建复杂的Web应用程序。
**Django** 是一个用 Python 编写的高级 Web 框架,它遵循模型-视图-模板(Model-View-Template,MVT)的设计模式。Django 的设计目标是简化 Web 开发流程,并通过内置的功能模块来提高开发效率和应用程序的安全性。...
《Python Django实战详解》 在IT领域,Python Django框架是一个非常流行且...在这个过程中,不断探索和实践是提升技能的关键。无论你是Python新手还是有经验的开发者,Django都会为你提供一个高效、强大的开发环境。
Django遵循MVC设计模式,即模型(Model)、视图(View)、模板(Template),并提供了一个由许多可重用组件构成的系统,以帮助开发者构建高质量的Web应用。本文将详细介绍如何在Python中使用Django框架,包括环境...
在这个"Python+Django+vue3全栈开发商城项目.zip"中,我们探索的是一个结合了Python、Django框架和Vue.js(特别是Vue3版本)技术的电子商务平台的开发实践。这个项目旨在提供一个全面的解决方案,涵盖了从后端数据...
### Django 1.11 文档概述与关键知识点解析 #### 一、文档概览 ...以上是对 Django 1.11 文档中的关键知识点的梳理和总结, 旨在为初学者提供一个全面的学习指南, 同时也为有经验的开发者提供了深入探索的技术细节。
最后,探索Django的高级特性,如中间件、自定义管理命令、单元测试和性能优化。 通过阅读“Django Pt. 1.pdf”,你将了解Django的基本架构,开始搭建第一个Django项目,并掌握如何使用Django进行数据库操作和视图的...
《Django Web开发指南》是一本深入讲解使用Python的Django框架进行Web应用构建的教程。源代码基于Python 3.4.2和...通过探索和运行这些示例,你可以掌握Django框架的核心概念,并逐步成为一名熟练的Django开发者。
2. **模板引擎的工作原理**:查看`django.template`模块,理解模板继承、过滤器和标签的实现。 3. **数据库查询**:探索`QuerySet` API,理解其延迟加载和缓存机制,以及如何优化SQL查询。 4. **中间件的实现**:...