Django是什么?

Django是一个基于Python的Web应用框架。它与Python的另外一个Web 框架 Flask最大的区别是,它奉行 “包含一切” 的哲学。该理念即为:创建 Web 应用所需的通用功能都应该包含到框架中,而不应存在于独立的软件包中。例如,身份验证、 URL 路由、 模板系统、 对象关系映射 (ORM) 和 数据库迁移等功能都已包含在Django 框架中。虽然看上去失去了一些弹性,但是却可以让你在构建网站的时候更加有效率。

由于Django最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。所以,我们可以发现在使用Django的很多网站里,都是用于作为CMS(内容管理系统)来使用的。

Django的工作方式

Django是一个MTV框架,其架构模板看上去与传统的MVC架构并没有太大的区别。Django将MVC中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。至于MVC控制器部分,由Django框架的URLconf来实现。

具体流程:

浏览器进行HTTP request;

Django根据URL configuration分配至对应的View;

View进行数据库的操作或其它运算;

View层将数据发送到Template进行渲染,并传回HttpResponse内容;

浏览器根据HTTP response显示网页内容。

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

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

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

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

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

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

一个序列化系统,能够生成或读取采用XML或JSON表示的Django模型实例。

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

一个可扩展的认证系统,用户登录与权限检查,快速开发用户会话功能。

国际化:内置国际化系统,方便开发出多种语言的网站。

自动化的管理界面:不需要你花大量的工作来创建人员管理和更新内容。

一组产生 RSS 和 Atom 的工具和产生Google 站点地图 (Google Sitemaps)的工具

一套支持轻量级标记语言(Textile和Markdown)的模板库

一套协助创建地理信息系统(GIS)的基础框架

一个灵活的评论系统

防止跨站请求伪造(cross-site request forgery)的工具

优缺点总结

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

Django优点:

完美的文档,Django近乎完美的官方文档。

全套的解决方案(full-stackframework + batteries included),基本要什么有什么(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,开发网站应手的工具Django基本都给你做好了,因此开发效率是不用说的。

强大的URL路由配置,Django让你可以设计出非常优雅的URL。

自助管理后台,让你几乎不用写一行代码就拥有一个完整的后台管理界面。

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

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

自带的ORM远不如SQLAlchemy强大,SQLAlchemy是Python世界里事实上的ORM标准,其它框架都支持SQLAlchemy了,唯独Django仍然坚持自己的那一套。

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

URL配置虽然强大,但全部要手写,高手和初识Django的人配出来的URL会有很大差异。

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

内容扩展:

让我们首先以外行人的话来说明当您的服务器收到网站请求时会发生什么。请求被传递给Django并尝试分析此请求。URL解析程序尝试将URL与模式列表进行匹配。它从上到下执行此匹配。如果它可以找到匹配并将请求传递给视图,这是相关的功能。该函数 view 可以检查是否允许请求。它还会生成响应,然后Django将其发送到用户的Web浏览器。

Django框架的历史

Adrian Holovaty和Simon Willison于2003年秋季在Lawrence Journal-World报纸上创建了Django。

Django于2005年7月在BSD许可下公开发布; 以吉他手Django Reinhardt命名。

今天,Django是一个开源项目,在世界各地都有贡献者。

到此这篇关于python中的django是做什么的的文章就介绍到这了,更多相关django是什么内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python软件是干什么用的-python中的django是做什么的相关推荐

  1. python软件是干什么用的,用python做的软件有哪些

    python是个什么东西 Python是一种跨平台的计算机程序设计语言.是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 最初被设计用于编写自动化脚本(shell),随着版本的不断更新 ...

  2. python主要是干什么用的,python到底是干什么的

    python主要用来干嘛 Python适合财务.设计.运营.策划.销售.HR.金融从业者.电商从业者学习,所设计的行业五花八门. 从以上也能看出来,python是很强大的一门语言,可以做:1.系统编程 ...

  3. python主要是干什么用的,python 主要用来做什么

    python主要用来干什么? python主要用来编辑脚本.Python的用途真的很多很多,如果你自制力强,有上进心,想通过学习来改变现状,那么学习Python可以让你点亮高薪人生. 有对Python ...

  4. python软件是免费的吗-Python编程软件下载

    Thonny是一款Python编程工具,非常适合Python的初学者使用,简单易操作,有错误的部分会直接显示出来,对于一些难懂的部分会给予解释,非常的人性化,需要的朋友欢迎下载使用. 软件优势 初始布 ...

  5. python软件开发的一般流程-Python各个岗位的开发流程

    根据张大美女提供资料微修改,在这谢谢张大美女! 1.python软件开发工程师 1.1 项目启动会 说明项目目标.阶段划分.组织结构.管理流程等关键事项. 1.2 需求调研 由用户提出,描述产品的功能 ...

  6. python软件下载手机版-Learn Python中文版app

    Learn Python中文版app是一个用手机学习Python编程的apk,软件经过本人亲自安装,可以用,自带夜间模式.语音模式以及编写代码的功能.可以用邮箱注册登录,很方便.每天利用零碎的时间学习 ...

  7. python软件是免费的吗-python语言是免费还是收费的?

    python是免费的么? python是免费的,也就是开源的.编程软件的盈利方式就是你使用它, 用的人越多越值钱. 注:Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. ...

  8. python软件是免费的吗-python软件都是免费的吗

    python软件免费吗? python是免费的,是自由.开放源码的软件之一,在python官网可以免费下载,使用者可以自由地发布这个软件的拷贝.阅读它的源代码.对它做改动.把它的一部分用于新的自由软件 ...

  9. python软件使用_8家使用Python的世界一流软件公司

    python软件使用 There are over 500 current programming languages, with more being written every day. Admi ...

最新文章

  1. ubuntu 终端批量复制文件_《卡死你3000》批量文件复制命令详解
  2. hdu5643 King's Game(约瑟夫环+线段树)
  3. python define graph_Python数据结构与算法之图结构(Graph)实例分析
  4. java stream 多次读取_多次从具有大量数据的Java InputStream中读取
  5. 前端学习(2609):vuex的使用步骤
  6. Django源代码阅读分析-2:持久层结构分析
  7. [Node.js] 使用nodejs操作mysql数据库
  8. php svn客户端
  9. java二维码小试牛刀
  10. Linux 软件包管理常用命令 -- yum
  11. Python Imaging Library: ImageFilter Module(图像滤波模块)
  12. 图片内包含文本制作方法
  13. 计算机更新bios,小编教你如何升级bios
  14. Redis的lua脚本
  15. Android中多次点击开发者模式的实现
  16. Java将指定文件/文件夹压缩成zip、rar压缩文件--解決中文乱码
  17. Android 百度地图定位显示当前位置
  18. 伦敦国王学院计算机申请要求,伦敦大学国王学院计算机科学与管理本科申请条件.pdf...
  19. 用python一键生成你的微信好友头像墙
  20. 初级模拟电路:2-4 限幅器

热门文章

  1. 关于敏捷开发和憋个大招两种开发方式的思考
  2. Ubuntu14.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)
  3. mybatis的#和$的差别
  4. android studio 一直在 svn performing vcs refresh
  5. 冲刺周期二--站立会议01
  6. 在python中、下列代码的输出是什么-关于下列python多线程代码输出效果的疑问?...
  7. python是什么语言、即变量不需要显示声明数据类型-python中可以声明变量类型吗...
  8. 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...
  9. 开课吧python小课值得么-领导想提拔你,从来看的不是努力!
  10. python必背内容-python必背函数