Python测试开发django1.简介

        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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python测试开发django2.环境部署项目创建

Django是由Python编写的Web框架,依赖Python环境,所以需要提前安装好Python环境。建议安装最新版本的Python3,Python 下载地址:https://www.python.org/downloads/1、Django官网https://www.djangoproject.com/2、Django版本Django…

excel如何输入毫秒级时间

1、选择单元格或单元格区域; 2、右击-设置单元格格式(或按ctrl1); 3、数字选项卡-自定义-h:mm:ss.000 4、单元格就可以输入精度为千分之一秒的时间,如:20:15:21.451 参考自https://zhidao.baidu.com/questi…

Python测试开发django3.视图和URL配置

1、Django path()方法Django路由系统中最重要的path()方法可以接收4个参数,其中2个是必须的:route和view,以及2个可选的参数:kwargs和namedef path(route, view, kwargsNone, nameNone):return re_path(rou…

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

【上一篇】我们讲了Python测试开发django3.视图和URL配置今天详细介绍下 Django 模板的应用,模板是一个文本,用于分离文档的表现形式和内容。我们已经知道创建项目用django-admin startproject helloworld,一个项目下可以有多个应用&#xff…

QImage QPixmap Mat区别

cvMat可以通过自定义函数转换为QImage Qimage通过fromImage函数 可以转换为QPixmap 绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和 QPicture。其中,QPixmap专门为图像在屏幕上的显示做了优化&…

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

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

git入门一

1、下载git并安装 (github网站中 start 收藏 follow 关注 watch (关注项进度)查看进度) 2、启动git。一般用git bash 3、改变git bash界面 4、在本地建立git bash仓库 到本地文件夹下,右击建立 git bash here。 5、…

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

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

git入门二

exit 退出git bash 命令窗口 1、刚安装成功界面: 2、查看配置信息: 3、配置用户名和邮箱 此时再看git config --list。已经有用户名和邮箱的信息 4、把当前目录初始化为仓库并提交 5、将远程和本地连接 (1)在https//github.com 上…

opencv1-加载、修改、保存图像

我的实践&#xff1a; #include<opencv2\opencv.hpp> #include<iostream> using namespace cv; using namespace std; int main() {Mat src imread("E:\\vs2015\\opencvstudy\\2.jpg", 1);if (src.empty()){cout << "could not load the i…

接口自动化实战设计思路,想法及疑问(一)

各位粉丝朋友们大家好&#xff0c;最近在学习研究接口自动化测试时&#xff0c;在设计思路和实践过程中&#xff0c;碰到了很多问题&#xff0c;再不断的优化和调整&#xff0c;这过程中产生了很多疑问和不解&#xff0c;并与很多测试的朋友进行交流想法&#xff0c;但是各自想…

2019年下半年《软件评测师》下午试卷及答案

一、阅读下列C程序&#xff0c;回答问题1至问题3。问题&#xff1a;1.1 (6分)请针对上述C程序给出满足100%DC (判定覆盖)所需的逻辑条件。buf_c[i]<7||buf_c[i]>14&#xff1b;i>32; buf_len>512&#xff1b;buf_len<512 buf_len0&#xff1b;buf_len!0 i<…

2018年下半年《软件评测师》下午试卷及答案

&#xff08;共15分&#xff09;一、阅读下列C程序&#xff0c;回答问题1至问题3,将解答填入答题纸的对应栏内。问题&#xff1a;1.1 &#xff08;3分&#xff09;请针对上述C程序给出满足100%DC&#xff08;判定覆盖&#xff09;所需的逻辑条件。本问题考查白盒测试用例设计…

opencv3-Mat对象

我的实践&#xff1a; #include<opencv2\opencv.hpp> #include<iostream> #include<math.h> using namespace cv; using namespace std; int main() {//加载图像Mat src imread("E:\\vs2015\\opencvstudy\\2.jpg", 1);if (!src.data){cout <&…

2017年下半年《软件评测师》下午试卷及答案

一、【C程序】问题&#xff1a;1.1 &#xff08;3分&#xff09;请针对上述C程序给出满足100%DC&#xff08;判定覆盖&#xff09;所需的逻辑条件。本题考查白盒测试法及应用。本问题考查白盒测试用例设计方法中的判定覆盖法。判定覆盖指设计足够的测试用例&#xff0c;使得被…

opencv4-图像操作

这里Vex3f 也可以是Vec3b #include<opencv2\opencv.hpp> #include<iostream> #include<math.h> using namespace cv; using namespace std;//读写图像&#xff0c; //读写像素&#xff0c; //修改像素值 int main() {Mat src imread("E:\\vs2015\\open…

2016年下半年《软件评测师》下午试卷及答案

一、阅读下列C程序&#xff0c;回答问题1至问题3&#xff0c;将解答填入答题纸的对应栏内。【C程序】问题&#xff1a;1.1 请针对上述C程序给出满足100%DC&#xff08;判定覆盖&#xff09;所需的逻辑条件本问题考查白盒测试用例设计方法中的判定覆盖法。判定覆盖指设计足够的…

opencv5-图像混合

代表一幅图像。代表权重&#xff0c;取值范围为0~1。代表另一幅图像 对图像的每一个像素进行此操作。得到混合后图像 我的实践&#xff1a; #include<opencv2\opencv.hpp> #include<iostream> #include<math.h> using namespace cv; using namespace std; …

2018年下半年《软件评测师》上午试卷及答案

1、以下关于信息和数据的描述中,错误的是( B)。 A. 通常从数据中可以提取信息 B. 信息和数据都由数字组成 C. 信息是抽象的、数据是具体的 D. 客观事物中都蕴涵着信息信息反映了客观事物的运动状态和方式&#xff0c;数据是信息的物理形式。信息是抽象的&#xff0c;数…

opencv6-调整图像亮度和对比度

一、理论 亮度&#xff1a;0~255之间取大一些的值 对比度&#xff1a;即让R G B 分量的差值增大 二、代码演示 #include<opencv2\opencv.hpp> #include<iostream> #include<math.h> using namespace cv; using namespace std; int main() {Mat src imread…