Python--Django--说明

Django 是基于python 的 Web 开发框架.
&nsbp;
  Web开发指的是开发基于B/S 架构, 通过前后端的配合, 将后台服务器上的数据在浏览器上展现给前台用户的应用.
&nsbp;
  在早期, 没有Web框架的时候, 使用 Python CGI 脚本显示数据库中的数据.

 
  Web框架致力于解决一些共同的问题, 为Web 应用提供通用的架构, 让用户专注于网站应用业务逻辑的开发, 而无需处理网络应用底层的协议, 线程, 进程等方面的问题, 从而大大提高开发者的效率和Web应用程序的质量.

 
一般Web框架的架构是这样的:
  在这里插入图片描述
 
  大多数基于Python的web框架,如Django、Tornado、Flask、Webpy都是在这个范围内进行增删裁剪。例如Tornado用的是自己的异步非阻塞“WSGI”网关接口,Flask则只提供了最精简和基本的框架,Django则是直接使用了现成的WSGI,并实现了大部分功能,提供了大量的应用工具。

Django

 
  Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。
 
  Django本身基于MVC架构,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等优点。
 
  Django诞生于2003年,2006年加入了BSD许可证,成为开源的Web框架。Django这一词语是根据比利时的爵士音乐家Django Reinhardt命名的,含有希望Django能够优雅地演奏(开发)各种乐曲(Web应用)的美好含义,和著名的电影《姜戈的解放》无关。
 
  Django是由美国堪萨斯(Kansas)州Lawrence城中的一个新闻开发小组开发出来的。当时Lawrence Journal-World报纸的程序员Adrian Holovaty和Simon Willison在用 Python 编写Web新闻网站,他们的 World Online小组制作并维护了当地的几个新闻站点。新闻界独有的特点是迭代迅速,从开发到上线,通常只有几天或几个小时的时间。为了能在截止时间前完成工作,Adrian和Simon不得不开发一种通用的高效的网络应用开发框架,也就是Django。
 
  2005年的夏天,当这个框架开发完成时,它已经用来制作了很多个World Online的站点。不久,小组中的Jacob Kaplan-Moss决定把这个框架发布为一个开源软件。短短数年,Django项目就有了数以万计的用户和贡献者,在世界范围内广泛传播。 原来的World Online的两个开发者(Adrian and Jacob)仍然掌握着Django,但是其发展方向受社区团队的影响更大。

Django 具有以下特点

  • Django是一个全栈Web框架。所谓全栈框架,是指除了封装网络和线程操作,还提供HTTP请求和响应、数据库读写管理、HTML模板渲染等一系列功能的框架。你可以不太准确地理解为全栈工程师包办了前后端和数据库访问的所有开发工作,整个网站都是一个人搭建的。
  • 功能完善、要素齐全。该有的、可以没有的都有,常用的、不常用的工具都提供。Django提供了大量的特性和工具,无须你自己定义、组合、增删及修改。但是,在有些人眼里这被认为是臃肿不够灵活,发挥不了程序员的能动性。(一体机和DIY你更喜欢哪个?-
  • 完善的文档。经过长期的发展和完善,Django有广泛的实践经验和完善的在线文档。开发者遇到问题时可以搜索在线文档寻求解决方案。
  • 强大的数据库访问API。Django的Model层自带数据库ORM组件,开发者无须学习其他数据库访问技术(例如SQLALchemy)。当然你也可以使用SQLALchemy,甚至不使用ORM组件。
  • 灵活的路由系统。Django具备路由转发、正则表达式、命名空间、URL反向解析等功能。
  • 丰富的Template模板功能:Django自带类似 jinjia 的模板语言,不但原生功能丰富,还可以自定义模板标签和过滤器。并且以类似Python的调用机制和视图默契配合。
  • 自带后台管理应用admin:只需要通过简单的几行配置和代码就可以实现一个完整的后台数据管理控制平台。这是Django最受欢迎的功能。
  • 完整的错误信息提示:在开发调试过程中如果出现运行错误或者异常,Django可以提供非常完整的错误信息帮助定位问题。

MVC及MTV设计模式

 
  在目前基于Python语言的几十个Web开发框架中,几乎所有的全栈框架都强制或引导开发者使用MVC设计模式。

MVC设计模式

 
  最早由Trygve Teenskaug在1978年提出,上世纪80年代是程序语言Smalltalk的一种内部架构。后来MVC被其他领域借鉴,成为了软件工程中的一种通用架构模式。MVC把Web框架分为三个基础部分:

模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web应用程序中用于处理应用程序的数据逻辑的部分,Model只提供功能性的接口,通过这些接口可以获取Model的所有功能。白话说,这个模块就是业务逻辑和数据库的交互层,定义了数据表。
 
视图(View):负责数据的显示和呈现,是对用户的直接输出。
 
控制器(Controller):负责从用户端收集用户的输入,可以看成提供View的反向功能。
 
  这三个部分互相独立,但又相互联系,使得改进和升级界面及用户交互流程,在Web开发过程任务分配时,不需要重写业务逻辑及数据访问代码。
 
  MVC在Python之外的语言中也有广泛应用,例如VC++的MFC,Java的Structs及Spring、C#的.NET开发框架,都非常有名。

MTV设计

 
  MTV和MVC本质上是一样的。
 
  Django对传统的MVC设计模式进行了修改,将视图分成View模块和Template模块两部分,将动态的逻辑处理与静态的页面展示分离开。而Model采用了ORM技术,将关系型数据库表抽象成面向对象的Python类,将数据库的表操作转换成Python的类操作,避免了编写复杂的SQL语句。
 
  模型(Model):和MVC中的定义一样
 
  模板(Template):将模型数据与HTML页面结合起来的引擎
 
  视图(View):负责实际的业务逻辑实现

Django的MTV模型组织可参考下图所示:
在这里插入图片描述

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

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

相关文章

c++宏有什么离谱操作?

Boost.Preprocessor确实是一个非常强大而复杂的C宏库,专门用于元编程,即在编译时进行代码生成和变换。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程不妨点个关注,给个评论222&…

面试总结------2024/04/04

1.面试官提问:你说你在项目中使用springsecurity jwt 实现了登录功能,能简单讲一下怎么实现的吗? 2.使用RabbitMQ实现订单超时取消功能 订单状态定义 首先,我们需要定义订单的不同状态。在这个示例中,我们可以定义以下…

实验一 Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT

一、安装vmware workstation软件 VMware workstation的安装介质,获取路径: 链接:https://pan.baidu.com/s/1AUAw_--yjZAUPbsR7StOJQ 提取码:umz1 所在目录:\vmware\VMware workstation 15.1.0 1.找到百度网盘中vmwa…

Pandas Dataframe合并连接Join和merge 参数讲解

文章目录 函数与参数分析otheronhowlsuffix, rsuffix, suffixesleft_index, right_index 函数与参数分析 在pandas中主要有两个函数可以完成table之间的join Join的函数如下: DataFrame.join(other, onNone, how‘left’, lsuffix‘’, rsuffix‘’, sortFalse, v…

YOLOv8 UI界面设计+热力图显示

进入可视化设计界面,设计UI pyside6-designer 设计好UI保存,然后通过以下命令将ui文件保存为py pyside6-uic myui.ui > myui.py 通过以下命令将资源文件qrc保存为py pyside6-rcc my_rc.qrc > my_rc.py 写主窗口函数实现功能... 项目基于yol…

基于Spring Boot的职称评审管理系统

基于Spring Boot的职称评审管理系统 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 部分系统展示 前台首页界面 用户注册登录界面 管理员登录界面 个人中心界面…

Driver not loaded之记录Qt访问MySql的解决经历

对于这个问题的本质原因,我也搞不明白,所以记录的方法不一定对所有人行之有效。我的目的很简单,就是把数据库用起来,经过查找网上资料,最终把数据库跑起来了。因此记录如下: 1,出现这个问题是缺…

【Go】十六、文件操作

文章目录 1、打开和关闭文件2、IO3、一次性读文件4、带缓冲区的读文件5、写入文件6、文件复制 1、打开和关闭文件 package main import("fmt""os" ) func main(){//打开文件:file,err : os.Open("d:/Test.txt");if err ! nil {//出错…

【医学影像数据处理】nii 数据格式文件操作汇总

大部分医学领域数据存储的都是dicom格式,但是对于CT等一类的序号图像,就需要多个dicom文件独立存储,最终构成一个序列series,这样存储就太过于复杂了。 nifti(Neuroimaging Informatics Technology Initiative&#x…

GT收发器64B66B协议(2)自定义PHY设计

文章目录 前言一、设计框图二、GT_module三、PHY_module3.1、PHY_tx模块3.2、PHY_rx_bitsync模块3.3、PHY_rx模块 四、上板测试 前言 有了对64B66B协议的认识以及我们之前设计8B10B自定义PHY的经验,本文开始对64B66B自定义PHY的设计 一、设计框图 二、GT_module …

蓝桥杯单片机速成8-NE555频率测量

一、原理图 NOTE:使用NE555测量频率之前,需要将J3-15(SIGNAL)与J3-16(P34短接) 在使用矩阵键盘的时候也记得把跳冒拔下,因为有公共引脚P34 又是因为他的输出引脚是P34,所以只能用定时器0来作为计数器进行频率测量了 二、代码实现 …

CSS设置网页背景

目录 概述: 1.background-color: 2.background-image: 3.background-repeat: 4.background-position: 5.background-attachment: 6.background-size: 7.background-origin: 8.background-…

Linux初学(十四)LampLnmp

一、简介 LAMP和LNMP是两种常见的web服务器组合。具体如下: LAMP:LAMP代表的是Linux(操作系统) Apache(HTTP服务器) MySQL(数据库) PHP(编程语言)。这个组合被…

C++利用键值对计算某一个数对应的最值及其索引位置

目录 一、算法概述二、代码实现1、计算最值2、计算最值及其索引 三、结果展示 本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法概述 类似下图所示,计算第一列中1或2对应的最…

线段树练习

1.单点修改区间查询 P3374 【模板】树状数组 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某一个数加上 x 求出某区间每一个数的和 输入格式 第一行包含两个正整数 n,m,分别表示该数列数字的个数和操作的总个…

ChatGPT 与 OpenAI 的现代生成式 AI(下)

原文:Modern Generative AI with ChatGPT and OpenAI Models 译者:飞龙 协议:CC BY-NC-SA 4.0 七、通过 ChatGPT 掌握营销技巧 在本章中,我们将重点介绍营销人员如何利用 ChatGPT,在这一领域中查看 ChatGPT 的主要用例…

Delphi编写的图片查看器

UNIT Unit17;INTERFACEUSESWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,Vcl.StdCtrls, Vcl.ExtDlgs, Vcl.ExtCtrls, Vcl.Imaging.jpeg; //注意:要加入jpej 否侧浏览图…

ids工业相机与电控位移台同步控制及数据采集

通过VS2017和OpenCV,实现ids工业相机与电控位移台同步控制及数据采集 目录项目环境配置代码流程及思路项目架构项目开发运行效果开发关键ids相机配置位移台环境配置相机头文件相机参数设置保存图像函数设置电控位移台头文件电控位移台设置参数最后就是通过main函数进行调用和控…

《QT实用小工具·十一》Echart图表JS交互之仪表盘

1、概述 源码放在文章末尾 该项目为Echart图表JS交互之炫酷的仪表盘,可以用鼠标实时改变仪表盘的读数。 下面为demo演示: 该项目部分代码如下: #include "widget.h" #include "ui_widget.h" #include "qurl.h&q…

PWM技术的应用

目录 PWM技术简介 PWM重要参数 PWM实现呼吸灯 脉宽调制波形 PWM案例 电路图 keil文件 直流电机 直流电机的控制 直流电机的驱动芯片L293D L293D引脚图 L293D功能表 直流电机案例 电路图 keil文件 步进电机 步进电机特点 步进电机驱动芯片L298 L298引脚图 L…