django的优缺点(非原创)
Django 大包大揽,用它来快速开发一些 Web 应用是不错的。如果你顺着 Django 的设计哲学来,你会觉得 Django 很好用,越用越顺手;相反,你如果不能融入或接受 Django 的设计哲学,你用 Django 一定会很痛苦,趁早放弃的好。所以说在有些人眼里 Django 无异于仙丹, 但对有一些人来说它又是毒药且剧毒。
先说缺点:
- 系统紧耦合,如果你觉得 Django 内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如下面将要说的 ORM、Template。要在 Django 里用 SQLAlchemy 或 Mako 几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭。
- Django 自带的 ORM 远不如 SQLAlchemy 强大,除了在 Django 这一亩三分地,SQLAlchemy 是 Python 世界里事实上的 ORM 标准,其它框架都支持 SQLAlchemy 了,唯独 Django 仍然坚持自己的那一套。Django 的开发人员对 SQLAlchemy 的支持也是有过讨论和尝试的,不过最终还是放弃了,估计是代价太高且跟 Django 其它的模块很难合到一块。
- Template 功能比较弱,不能插入 Python 代码,要写复杂一点的逻辑需要另外用 Python 实现 Tag 或 Filter。
- 让人纠结的 auth 模块,Django 的 auth 跟其它模块结合紧密,功能也挺强的,就是做的有点过了,用户的数据库 schema 都给你定好了,这样问题就来了,比如很多网站要求 email 地址唯一,可 schema 里这个字段的值不是唯一的,纠结是必须的了。
- 核心开发团队似乎比较顽固,除了说第三方库难使用,据说历史上 ORM API 繁琐(后来按 ActiveRecord 风格重写),曾经对 ajax 热潮也不怎么当回事。
- 周边资源不够发达,其实说来说去有些相关,这个是第三方库比较难融合相关的,没有很好的插件体系。虽然官方文档还不错,但是相关书籍很资料相比 rails 等并不多。
- 早前有说没有结合测试框架,最新的 1.5 肯定是有了。不过个人判断又是反应迟钝的一个表现。不过个人也不喜欢测试太重,这点跟作者想法比较一致。
再来看看一些优点:
- 自助管理后台,admin interface 是Django 里比较吸引眼球的一项 contrib,让你几乎不用写一行代码就拥有一个完整的后台管理界面。
- 虽然 Django 自带的 ORM 不如 SQLAlchemy 强大,但也不弱。一般来说可以不怎么使用 SQL 语句,每条记录都是一个对象,而取对象的关联,易如反掌。
- URL design,Django 的 url 模块设计得看似很复杂,都是使用正则表达式,但真正用到的都是很简单的正则,等你用到一定程度的时候,发现这块东西,做的很细致,地址的表达上,你可以随心所欲,那些优美的,简洁的,专业的地址,不管哪种,你都能表现出来。
- Django 的 App 理念很好。App 可插拔,是不可多得的思想。不需要了,可以直接删除,对系统影响不大。
- Django 的错误提示做的足够详细了,我有时喜欢上 Django 的出错页面了,那页面先不说有多详细,但光页面的美观上就是一种享受。有时,Django 的错误提示信息,让你马上就能知道在那个页面哪行代码出错了。
django的优缺点(非原创)的更多相关文章
- 老男孩Django笔记(非原创)
.WEB框架 MVC Model View Controller 数据库 模板文件 业务处理 MTV Model Template View 数据库 模板文件 业务处理 ############## ...
- Linux下high CPU分析心得【非原创】
非原创,搬运至此以作笔记, 原地址:http://www.cnitblog.com/houcy/archive/2012/11/28/86801.html 1.用top命令查看哪个进程占用CPU高ga ...
- CSS样式命名整理(非原创)
非原创,具体出自哪里忘了,如果侵害您的利益,请联系我. CSS样式命名整理 页面结构 容器: container/wrap 整体宽度:wrapper 页头:header 内容:content 页面主体 ...
- 非原创。使用ajax加载控件
非原创.来自博客园老赵. public class ViewManager<T> where T : System.Web.UI.UserControl { private System. ...
- Java 表达式解析(非原创)
因项目需要,在网上找来一套表达式解析方法,由于原来的方法太过于零散,不利于移植,现在整理在同一文件内: 文件中包含5个内部类,源码如下: import java.util.ArrayList; imp ...
- Java Interface 是常量存放的最佳地点吗?(转帖学习,非原创)
Java Interface 是常量存放的最佳地点吗?(转帖学习,非原创) 由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量.因而inter ...
- 用RD,GR,BL三个方法内代码生成一张图片(非原创,我只是完整了代码)
我公开以下图片的源代码,,是ppm格式的,,自己找到能打开的工具.. (非原创,我加工的代码,可直接执行运行输出,缩略图能看到效果) 这是原博客 http://news.cnblogs.com/n/ ...
- tp5.1 phpspreadsheet- 工具类 导入导出(整合优化,非原创,抄一抄,加了一些自己的东西,)
phpspreadsheet-工具类 导入导出(整合优化,非原创,抄一抄,加了一些自己的东西)1. composer require phpoffice/phpspreadsheet2. 看最下面的两 ...
- Vue 仿QQ左滑删除功能(非原创)
非原创,摘选来源:http://www.jb51.net/article/136221.htm. 废话不多说,相当实用,先记录. Html代码: <div class="contain ...
- 【非原创】LightOJ - 1284 Lights inside 3D Grid【概率期望】
学习博客: 戳这里 戳这里 戳这里 戳这里 题意: 在一个三维的空间,每个点都有一盏灯,开始全是关的, 现在每次随机选两个点,把两个点之间的全部点,开关都按一遍:问k次过后开着的灯的期望数量: 题解: ...
随机推荐
- ThreadLoacl 小记
参考地址: https://www.cnblogs.com/dolphin0520/p/3920407.html ThreadLoacl 本地线程变量 为线程创建一个副本, 一个内部类ThreadLo ...
- mysql 索引优化知识整理笔记
http://blog.csdn.net/zhxp_870516/article/details/8434539 http://www.jb51.net/article/49346.htm https ...
- Java继承与多态浅析
一.继承 1.通过extends继承的父类可以是不加abstract关键字的普通类,也可以是加了abstract关键字的抽象类.继承普通类时可以覆写父类的方法,或者创建自己独有的方法,或者这两 ...
- PHP 操作Mongodb 实例
缩略版本<?php //1.连接MongoDB $mongo = new Mongo(); $mongo = new Mongo("mongodb://username:passwor ...
- 遍历DOM树,过滤节点
jQuery还提供以下方法来过滤节点. 方法 说明 first() 获取第一个,示例 $('li').last() last() 获取最后一个,示例$('li').last() eq() ...
- 给tkinter文本框添加右键菜单
给tkinter文本框添加右键菜单 需求:直接右键点击使用tkinter创建的文本框是不会弹出菜单的.我们需要实现右键点击tkinter框架下的Entry对象.Text对象后弹出右键菜单可复制.粘贴和 ...
- Delphi 不使用自带模板创建服务
program Project1; uses Windows, WinSvc; const ServiceName: pchar = 'SnowWings Service'; DisplayName: ...
- Cache雪崩效应
大概半年前,Guang.com曾发生一次由于首页部分cache失效,导致网站故障. 故障分析: 当时逛正在做推广,流量突然暴增,QPS达到5000+,当首页部分cache失效时,需要查询DB, 但由于 ...
- C++ 使用VS2010创建MFC ActiveX工程项目
1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... Activ ...
- C++学习一Virtual
没有系统性学习C++,所以工作中使用特别别扭,也不是不会,也不是不懂,但读代码和写代码时总有点生疏感.所以该补还是补起来,现在想想还是学生时代学习的知识更加扎实,那是融入骨子里的. virtual函数 ...