django框架简介

2023-05-16

主要内容

1.Django框架发展

2.Django架构,MTV模式

3.开发流程

4.开发实例——Poll

python下各种框架

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

服务发布

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全套的解决方案,DjangoRails一样,提供全套的解决方案(full-stackframework + batteries included),基本要什么有什么(比如:cachesessionfeedormgeoauth),而且全部Django自己造,开发网站应手的工具Django基本都给你做好了,因此开发效率是不用说的,出了问题也算好找,不在你的代码里就在Django的源码里。

l强大的URL路由配置,Django让你可以设计出非常优雅的URL,在Django里你基本可以跟丑陋的GET参数说拜拜。

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

缺点(源自Django坚持自己造所有的轮子,整个系统相对封闭)

l系统紧耦合,如果你觉得Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如下面将要说的ORMTemplate。要在Django里用SQLAlchemyMako几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭。

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

lTemplate功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现TagFilter

lURL配置虽然强大,但全部要手写,这一点跟RailsConventionover configuration的理念完全相左,高手和初识Django的人配出来的URL会有很大差异。

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

lPython文件做配置文件,而不是更常见的inixmlyaml等形式。这本身不是什么问题,可是因为理论上来说settings的值是能够动态的改变的(虽然大家不会这么干),但这不是最佳实践的体现。

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

组件

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

核心框架中还包括:

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

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

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

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

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

l一个序列化系统,能够生成或读取采用XML或JSON表示的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官方支持:

  • PostgreSQL
  • MySQL
  • SQLite
  • Oracle

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最佳实践


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django框架简介 的相关文章

随机推荐

  • Go学习之regexp包学习

    Go中regexp包主要存放的是处理正则表达式相关的结构和处理函数 xff0c 具体的函数原型可以在GOROOT中寻找相应的包查看 下面只是给出各个不同的函数的功能和使用方法 xff0c 正则表达式的基本概念可以查看正则表达式基本概念学习总
  • Go1.1.1新功能module的介绍及使用

    Go1 1 1版本发布 2018 08 24发布 已经过去几天 xff0c 从官方的博客中看到 xff0c 有两个比较突出的特色 xff0c 一个就是今天讲的module xff0c 模块概念 目前该功能还在试验阶段 xff0c 有些地方还
  • linux系统故障(一)之grub恢复

    linux系统故障 xff08 一 xff09 之grub恢复 前言 1 什么是linux系统故障 xff1f 2 什么是grub xff1f 3 grub坏了我们怎么恢复 xff1f 4 grub恢复的具体方法 xff1f 实验环境 本次
  • MSCOCO数据集下载安装---image_caption(内涵报错)

    参考博客 xff1a https blog csdn net ccbrid article details 79368639 在linux上 步骤 1 git clone cocoapi2 进入文件夹3 放入image和annotation
  • Ubuntu安装RTL8812AU无线网卡

    Ubuntu安装RTL8812AU无线网卡 下载资源解压并使用管理员权限 xff0c 运行以下指令重新插拔无线网卡 xff0c 安装成功 下载资源 链接 xff1a https pan baidu com s 161Pje1p27yuzDt
  • Linux线程--生产者消费者模型

    在生产者 消费者模型中 xff0c 主程序分别启动了生产者线程和消费者线程 xff0c 其中生产者线程不停的写入共享的循环缓冲区 xff0c 二消费者线程这不停的从缓冲区中取出数据 在生产者写入缓冲区时 xff0c 首先要获得互斥锁 xff
  • Android平台GDB调试环境搭建

    一 背景 Android系统采用GDB xff08 The GNU Project Debugger xff0c GNU工程调试器 xff09 作为原生程序的调试器 xff0c GDB调试源码的程序优势非常明显 xff1b 但Android
  • 1寸、2寸、小2寸的照片尺寸是多少

    1寸照片 xff0c 尺寸大小是 xff1a 2 5厘米 3 5厘米 xff0c 分辨率设成300像素 英寸 xff0c 这样最终得到的像素是 xff1a 295 413 小2寸照片 xff0c 尺寸大小是 xff1a 3 3厘米 4 8厘
  • React-Native 消息推送

    在这里我们可以选择大厂的推送 xff0c 优先使用极光推送 xff0c 下一篇将介绍如何使用阿里推送 使用说明 PS 真没想到极光大厂出的官方文档也有问题 xff0c 这里列出是最新版本修复可用版 创建新项目 react native in
  • 欢迎使用CSDN-markdown编辑器

    能力培养 与team leader讨论 xff0c 大抵将能力培养分成三类 业务能力 解决具体反馈的问题 xff1b 总结通用的解决方案 xff1b 从根本上改善根本问题技术能力 设计架构的能力 xff0c 注重性能的改善泛化能力 明确问题
  • 开发原则

    1 提供完整的数据 xff0c 不需要调用者进行额外的处理 2 测试 xff0c 保证比较对象要都是真实正确的 3 以业务需求为驱动 xff0c 兼顾系统架构升级
  • Windows下多台电脑共享剪切板的方法

    转自于 http www microsoft com china MSDN library WebServices WebServices WebServices mspx mfr 61 true
  • Cisco Packet Tracer模拟器使用

    第一篇 熟悉界面 一 设备的选择与连接 在界面的左下角一块区域 xff0c 这里有许多种类的硬件设备 xff0c 从左至右 xff0c 从上到下依次为路由器 交换机 集线器 无线设备 设备之间的连线 xff08 Connections xf
  • 各种路由器接口与连接方法

    转自于 http bbs pcsoft com cn thread 138952 1 4 html 路由器所在的网络位置比较复杂 xff0c 既可是内部子网边缘 xff0c 也可位于内 外部网络边缘 同时为了实现强大的适用性 xff0c 它
  • line vty 0 4 什么意思

    转自于 http hi baidu com rxlly blog item 9072bc397ae18bde7c1e71f6 html line vty 0 4是不是指启用5个telnet会话的意思 xff1f 那line vty 0 0是
  • 内网远程协助工具_分享几个常用的免费远程软件

    转载自 xff1a https blog csdn net weixin 39806779 article details 110962599 1 说到远程工具 xff0c 首先我们想到的是影子 Radmin 外网需要映射端口 xff0c
  • matlab实现牛顿迭代法求解非线性方程组

    http hi baidu com aillieo blog item 0800e2a10ac9a59647106493 html 已知非线性方程组如下 3 x1 cos x2 x3 1 2 61 0 x1 2 81 x2 43 0 1 2
  • 区别 chown和chmod的用法

    本人总是习惯使用chmod xff0c 而把chown混淆 chown就是修改 第一列内容的 xff0c chmod是修改 第3 4列内容的 chown用法 用来更改某个目录或文件的用户名和用户组的 chown 用户名 组名 文件路径 xf
  • Linux中安装新的包时错误提示

    错误1 E Could not open lock file var lib dpkg lock open 13 Permission denied E Unable to lock the administration directory
  • django框架简介

    主要内容 1 Django框架发展 2 Django架构 MTV模式 3 开发流程 4 开发实例 Poll python下各种框架 一个完整的Web应用框架包括下面功能的支持 服务发布 URL分发 模板支持 数据库处理 Python框架一般