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框架简介 的相关文章

随机推荐

  • The JAVA_HOME environment variable is not defined correctly,

    linux安装maven查看版本时提示如标题 xff1a root 64 iZ2zeiyfk6wfvd1y5al5maZ middleware mvn version The JAVA HOME environment variable i
  • zabbix重启服务器后Service Unavailable

    查看错误日志 xff1a tail f var log httpd error log 日志提示不存在php目录下的zabbix sock文件 xff1b 再查看端口 xff1a 发现php的9000端口没起来 xff1b 解决办法 xff
  • linux安装anaconda3

    wget https repo anaconda com archive Anaconda3 2020 11 Linux x86 64 sh sh Anaconda3 2020 11 Linux x86 64 sh xff08 一路回车和y
  • linux安装zookeeper单点

    需要有jdk环境 安装java yum list java 1 8 yum install java 1 8 0 openjdk y 下载地址 http zookeeper apache org wget tar zvxf zookeepe
  • CAN总线网络的传输模式

    CAN总线网络的传输模式根据触发条件的不同 xff0c 在车身CAN网络中可分为事件型 周期性及混合型三种传输模式 xff1b 1 事件型传输模式 xff1a 随着类型或数据的转变及时发送的消息 此类型消息的好处是极少占用总线资源 xff0
  • matlab中m文件的命名规则

    matlab的m文件的命名规则 xff1a 1 文件名命名要用英文字符 xff0c 首字符不能是数字或下划线 xff1b 2 文件名不能与matlab的内部函数名相同 m文件名的命名尽量不要是简单的英文单词 xff0c 最好是由大小写英文
  • 2014去哪儿校招笔试

    共 3 43 2 43 2 个题 开发 前3 个必做 xff0c 其他选做 测试或web 开发 前 2 个必做 43 另外 2 个必做 1 字符串split 43 翻转 2 实现 访问历史记录 xff0c insert next pre 3
  • MicroStrategy笔试

    1 coding判定二叉树是否是有序二叉树 2 一个有序数组A xff08 buffer 足够大 xff09 xff0c 和一个有序数组 B xff0c 设计算法 xff0c merge 两个数组后有序 xff0c 不使用任何额外的内存空间
  • 欢迎使用CSDN-markdown编辑器

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

    鲁棒性 设计 相对于终端成本 xff0c 网络掉线的损失是行业客户是不可接受的 xff0c 所以行业终端鲁棒性设计很重要 这里的鲁棒性是指排除了前述的散热 环境可靠性等自身设计后面对其他突发未知情况的还能可靠应用的能力 业内对于鲁棒性的设计
  • ES设置多个自定义分词器,每个分词器使用不同的词库

    ES中如何设置自定义分词器并且每个分词器使用自己定义的词库 xff1f 1 首先在ansj cfg yml中配置 然后在ansj library properties文件中添加词典放置路径 ansj library properties和l
  • 开发原则

    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是
  • 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框架一般