Django是一种基于Python开发的开源的高级Web应用框架,使用Django,使你能够以最小的代价构建和维护高质量的Web应用。Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能,Python 加 Django 是快速开发、设计、部署网站的最佳组合。

Django 框架的组成部分

Django 框架的核心包括:

  • 一个 面向对象 的映射器,用作数据模型(以 Python 类的形式定义)和关系型数据库间的介质;

  • 一个基于正则表达式的 URL 分发器;

  • 一个视图系统,用于处理请求;

  • 一个模板系统。

核心框架中还包括:

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

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

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

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

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

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

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

Django 包含了很多应用在它的 contrib 包中,这些包括:

  • 一个可扩展的认证系统

  • 动态站点管理页面

  • 一组产生 RSS 和 Atom 的工具

  • 一个灵活的评论系统

  • 产生 Google 站点地图(Google Sitemaps)的工具

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

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

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

Django 的优点

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

  • 完全免费并开源源代码、快速高效开发、强大的可扩展性

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

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

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

Django 的缺点

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

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

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

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

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

MVC 模型

MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC 以一种插件式的、松耦合的方式连接在一起。

  • 模型(M)- 编写程序应有的功能,负责业务对象与数据库的映射(ORM)。

  • 视图(V)- 图形界面,负责与用户的交互(页面)。

  • 控制器(C)- 负责转发请求,对请求进行处理。

用户操作流程图:

MTV 模型

Django 的 MTV 模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django 的 MTV 分别是指:

  • M 表示模型(Model):编写程序应有的功能,负责业务对象与数据库的映射(ORM)。

  • T 表示模板 (Template):负责如何把页面(html)展示给用户。

  • V 表示视图(View):负责业务逻辑,并在适当时候调用 Model和 Template。

除了以上三层之外,还需要一个 URL 分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View 处理,View 再调用相应的 Model 和 Template

用户操作流程:

用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数:

  • a.如果不涉及到数据调用,那么这个时候视图函数直接返回一个模板也就是一个网页给用户。

  • b.如果涉及到数据调用,那么视图函数调用模型,模型去数据库查找数据,然后逐级返回。

视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

QQ群

扫码加公号1

扫码加公号2

Python测试开发django1.简介相关推荐

  1. python测试开发django-1.开始hello world!

    前言 当你想走上测试开发之路,用python开发出一个web页面的时候,需要找一个支持python语言的web框架.django框架有丰富的文档和学习资料,也是非常成熟的web开发框架,想学pytho ...

  2. 可爱的python测试开发库(python测试开发工具库汇总)

    2019独角兽企业重金招聘Python工程师标准>>> 欢迎转载,转载请注明来源: github地址 谢谢点赞 本文地址 Python测试开发库 参考资料 https://githu ...

  3. Python 测试开发从入门到高手成长之路

    > 文末领取测试开发进阶指南和福利! 在" **质量第一,效率为王** "的移动互联网和大数据时代,互联网 IT 技术团队为了应对产品快速迭代要求,就必须具备持续交付的能力. ...

  4. python测试开发自学教程-2019第一期《python测试开发》课程,10月13号开学

    2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...

  5. python global用法_【python测试开发栈】python基础语法大盘点

    周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...

  6. Python测试开发django5.urls.py参数name与a标签的引用

    上一篇,我们学习了Python测试开发django5.templates模板变量传参 如果我们有2个页面home.html和demo.html,两个页面是独立的没有关系的,现在需要从home.html ...

  7. Python测试开发django5.templates模板变量传参

    上一篇,我们学习了Python测试开发django4.templates模板配置 templates模板中html文件是一个静态页面,写四的,如果有时我们想动态的传入一些不同的参数,想实现在一个固定的 ...

  8. Python测试开发django4.templates模板配置

    [上一篇]我们讲了Python测试开发django3.视图和URL配置 今天详细介绍下 Django 模板的应用,模板是一个文本,用于分离文档的表现形式和内容. 我们已经知道创建项目用django-a ...

  9. 可爱的python测试开发库及项目(python测试开发工具库汇总)

    转载: https://www.jianshu.com/p/ea6f7fb69501 可爱的python测试开发库及项目(python测试开发工具库汇总) github地址 相关书籍下载 Python ...

最新文章

  1. iOS UILabel UITextView自适应文本,或文本大小自适应
  2. 784.字母大小写全排列
  3. input子系统分析之三:驱动模块
  4. oracle如何进入管理器,oracle 启动管理器
  5. 霍夫变换(hough transform)原理
  6. 至毕业设计组同学的一封公开信
  7. #ifdef _DEBUG #define new DEBUG_NEW #endif的解释
  8. Cmake安装遇到问题
  9. (Java) Md5Utils
  10. 微信小程序 多图上传解决方案
  11. 调试错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
  12. 【windows】Windows电脑怎么卸载服务/删除服务?
  13. hdu5064 dp
  14. 关于工程总承包(EPC)项目最高限价的说明
  15. 计算机主机的跳线怎么接,电脑主机的开关线怎么接,如何接电脑主板电源线 详细始末...
  16. c语言less函数,Less 函数
  17. 【c#】服务端客户端连接类
  18. 如何在xmd上运行java文件,Java学习笔记(一)
  19. 怎么用python画圆柱_python绘制圆柱体
  20. casperjs 轻松实现网页截图

热门文章

  1. android core log,Android 日志系统(Logcat)的实现分析
  2. vue 组件 - 非单文件组件
  3. thinkphp三级分销小程序源码_山东谷道微信小程序商城源码带后台 公众号平台三级分销系统...
  4. jekenis父子结构项目打包_全栈之DevOps系列 - 发布 Python 项目 开源/私有 包
  5. php fetch返回false,Php fetch返回字符串而不是布爾值“true / false”值
  6. arraylist下标从几开始_漫画:为什么计算机从 0 开始计数,而不是从 1 开始?
  7. 大学计算机基础知识判断题,大学计算机基础学习知识判断题.doc
  8. java中字符串后加Box_字符串未显示在JavaFX中ComboBox的Tableview上
  9. 1t硬盘怎么分区最好_win7系统硬盘怎么分区 win7系统硬盘分区步骤【介绍】
  10. python输出国际象棋棋盘_python输出国际象棋棋盘的实例分享