django框架介绍

主要内容php

1.        Django框架发展html

2.        Django架构,MTV模式python

3.        开发流程web

4.        开发实例——Poll正则表达式

python下各类框架sql

一个完整的Web应用框架包括下面功能的支持数据库

服务发布django

URL分发设计模式

模板支持浏览器

数据库处理

Python框架通常都支持前3个方面,按对4个功能的支持状况分类以下:

平台性框架:不依赖数据库,更关注服务的高校构建和运行平台的稳定。表明性框架:Zope和Twisted

轻小型框架:认为数据库不是应用的必要因素,更关注友好快速的简单任务的开发。表明性框架:Cherry,Quixote和web.py,没有内置的数据库支持模块。

一站式框架:认为数据库是应用的重要因素,关注如何仅基于自己快速实现一个功能性网站。表明性框架:Django,TurboGears

Django简介

Django(维基百科) Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don't Repeat Yourself)。在Django中Python被广泛使用,甚至包括配置文件和数据模型。

Django 于 2008年6月17日正式成立基金会。

Django吸引人的特色

在Python各类web框架中,Django的文档最完善、市场占有率最高、招聘职位最多!

优势

l  完美的文档,Django的成功,我以为很大一部分缘由要归功于Django近乎完美的官方文档(包括Djangobook)。

l  全套的解决方案,Django象Rails同样,提供全套的解决方案(full-stackframework + batteries included),基本要什么有什么(好比:cache、session、feed、orm、geo、auth),并且所有Django本身造,开发网站应手的工具Django基本都给你作好了,所以开发效率是不用说的,出了问题也算好找,不在你的代码里就在Django的源码里。

l  强大的URL路由配置,Django让你能够设计出很是优雅的URL,在Django里你基本能够跟丑陋的GET参数说拜拜。

l  自助管理后台,admin interface是Django里比较吸引眼球的一项contrib,让你几乎不用写一行代码就拥有一个完整的后台管理界面。

缺点(源自Django坚持本身造全部的轮子,整个系统相对封闭)

l  系统紧耦合,若是你以为Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,好比下面将要说的ORM、Template。要在Django里用SQLAlchemy或Mako几乎是不可能,即便打了一些补丁用上了也会让你以为很是很是别扭。

l  Django自带的ORM远不如SQLAlchemy强大,除了在Django这一亩三分地,SQLAlchemy是Python世界里事实上的ORM标准,其它框架都支持SQLAlchemy了,惟独Django仍然坚持本身的那一套。Django的开发人员对SQLAlchemy的支持也是有过讨论和尝试的,不过最终仍是放弃了,估计是代价过高且跟Django其它的模块很难合到一块。

l  Template功能比较弱,不能插入Python代码,要写复杂一点的逻辑须要另外用Python实现Tag或Filter。

l  URL配置虽然强大,但所有要手写,这一点跟Rails的Conventionover configuration的理念彻底相左,高手和初识Django的人配出来的URL会有很大差别。

l  让人纠结的auth模块,Django的auth跟其它模块结合紧密,功能也挺强的,就是作的有点过了,用户的数据库schema都给你定好了,这样问题就来了,好比不少网站要求email地址惟一,可schema里这个字段的值不是惟一的,纠结是必须的了。

l  Python文件作配置文件,而不是更常见的ini、xml或yaml等形式。这自己不是什么问题,但是由于理论上来讲settings的值是可以动态的改变的(虽然你们不会这么干),但这不是最佳实践的体现。

Django大包大揽,用它来快速开发一些Web运用是很不错的。若是你顺着Django的设计哲学来,你会以为Django很好用,越用越爽;相反,你若是不能融入或接受Django的设计哲学,你用Django必定会很痛苦,趁早放弃的好。

组件

Django框架的核心包括:一个 面向对象 的映射器,用做数据模型(以Python的形式定义)和关联性数据库间的媒介;一个基于正则表达式的URL分发器;一个视图系统,用于处理请求;以及一个模板系统。

核心框架中还包括:

l 一个轻量级的、独立的Web服务器,用于开发和测试。

l 一个表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换。

l 一个缓存框架,并有几种缓存方式可供选择。

中间件支持,容许对请求处理的各个阶段进行干涉。

l 内置的分发系统容许应用程序中的组件采用预约义的信号进行相互间的通讯。

l 一个序列化系统,可以生成或读取采用XMLJSON表示的Django模型实例。

l 一个用于扩展模板引擎的能力的系统。

内置应用

Django 包含了不少应用在它的"contrib"包中,这些包括:

  • 一个可扩展的认证系统
  • 动态站点管理页面
  • 一组产生 RSS 和 Atom 的工具
  • 一个灵活的评论系统
  • 产生Google 站点地图 (Google Sitemaps)的工具
  • 防止跨站请求伪造(cross-site request forgery)的工具
  • 一套支持轻量级标记语言(Textile和Markdown)的模板库
  • 一套协助建立地理信息系统(GIS)的基础框架

服务的部署

Django 能够运行在启用了 mod python 的 Apache 2上,或是任何WSGI兼容的Web服务器。Django也有启动FastCGI服务的能力,所以可以应用于任何支持FastCGI的机器上。

下列数据库引擎被Django官方支持:

MicrosoftSQL Server的适配器正在开发中,处于试验阶段。(注:SQL Server的支持在1.0版本中已经被彻底去除)

Django1.0已经能够利用Jython运行在任何J2EE服务器。

开发简单应用的步骤

1.  进入目标文件夹,创建项目django-admin.pystartproject  mysite。Django框架自动为咱们创建所须要的项目文件夹和一些配置文件

2.  进入项目文件夹,创建应用django-admin.py startapppolls。Django框架会自动生成所须要的models.py和views.py等文件

3.  编辑settings.py,将新建的应用Polls,加入到项目中,INSTALLEN_APPS加入一行,‘mysite.polls’,

4.  配置urls.py,加入指望的url规则,访问mysite.polls.views中的方法

5.  编辑views.py,编写2个方法

6.  启动内置开发服务器,django python manage.pyrunserver

7.       在浏览器中输入http://localhost:8000/访问测试页面

 

1.  另注:数据库链接中。python 2.5及之后的版本内涵sqlite数据库,不须要另外安装。name是必定要是包含完整路径的文件名称。若文件本来不存在,在使用同步数据库后,系统会为每一个应用自动建立所须要的table,其余数据库都必须填写用户名和密码,而且须要事先建立好数据库。

2.  app能够放在任何python路径上。放在与manage.py同级目录中,将做为该工程的顶级模块,而不是mysite的子模块。

3.  若是写view时采用硬编码方式,要改变页面显示方式,就要改变python代码。解决方案:利用template系统从python中分离出设计。解决方案:利用template系统从python中分离出设计

 

应用部署

详见Django book

Django框架开发效率

用django构建的网站

http://www.djangosites.org/官方展现

在该网站上能够得到一个应用网站的源码,以供学习参考。

l  欧洲一个日化网上商店

l  http://www.chinesehour.com/中文学习网站

l  焦点网站http://www.focus.com/  焦点观察,与专家对话。框架很是适合

l  国际象棋俱乐部https://secure.chess.com/chesspark.html在线国际象棋

l  代码管理网站 http://dpaste.com/

参考资料

http://www.360doc.com/content/09/1206/13/50698_10483406.shtml#Django MVC模式,Django发展

http://simple-is-better.com/news/385#digRuby 跟 Python 本质上不一样,Python是很是简约的语言

http://www.360doc.com/content/12/0229/11/2902158_190487111.shtml浅谈五大Python Web框架

http://djangobook.py3k.cn/2.0/DjangoBook2.0中文翻译(很好)

Django官网https://www.djangoproject.com/

http://codinn.com/projects/django-best-practices/view/Django最佳实践

相关文章
相关标签/搜索