首页 > 其他分享 >django框架原理

django框架原理

时间:2023-06-27 17:56:39浏览次数:30  
标签:框架 URL 视图 Django 原理 django 模板 View

一、MTV设计

 T 模板(Template)接收用户输入后交由 V 视图(View)去处理,V 视图(View)负责连接 M 模型(Model)进行数据操作、并将操作返回的结果再传送给 T 模板(Template)进行展示。以上就是 Django 框架的 MTV 模式的基本工作原理

 二、Django框架的View视图展示机制

 在 Django 服务器启动时,会自动加载在同一目录下的配置文件(settings.py),该配置文件涵盖了项目所需的全部配置参数。其中,最重要的配置参数就是“ROOT_URLCONF”,定义了 Django 服务器使用哪个 Python 模块来用作本项目的 URLConf(一般默认为 urls.py)。

当用户在浏览器(Web Browser)中访问 url 时,Django 服务器会接收到一个 HTTP 请求,通过服务器端特定的 Handler(ModPythonHandler),创建 HttpRequest 并传递给中间组件(Request Midware)进行处理,这些中间组件起着功能增强的作用。

Django 服务器会根据 ROOT_URLCONF 配置的参数来加载 URLConf;然后按顺序逐个匹配 URLConf 中的 URLpatterns,如果匹配成功,则会调用相关联的 View 视图中间件函数,并将 HttpRequest 对象作为第一个参数向下传递;最后,通过 View 视图返回一个 HttpResponse 对象(通常是 Response)。

另外,Django 框架还实现了完整的异常处理机制,其主要是通过异常处理中间件(Exception Midware)来实现的。当系统出现异常时,异常处理中间件(Exception Midware)会截获并判断异常类型,从而返回异常错误(404 或 500 等)信息。

三、Django框架的用户操作流程

1、MVC 模式的用户操作流程:

 Django 框架的 MTV 模式用户操作流程,本质上与 MVC 模式的用户操作流程是一样的,也是为了在各组件间保持松耦合关系。二者只是定义上有些不同,如前文中介绍的,Django 框架的 MTV 模式指的是 M 模型(Model)、T 模板(Template)和 V 视图(View)。最重要的是,MTV 模式另外实现了一个 URL 分发器模块,其作用是将每一个 URL 页面请求分发给相应的 V 视图(View)进行处理,然后再由 V 视图(View)去调用相应的 M 模型(Model)和 T 模板(Template)。

2、Django 框架用户操作流程如图

 用户通过浏览器向服务器端的 URL 分发器模块发起一个 URL 请求(request),这个 URL 请求会去访问视图函数(View.py)进行匹配,再进一步通过数据模型(Models)访问数据库进行数据操作,然后将操作结果逐级返回到模板(Template),并最终返回网页给用户。

 

Django框架的主要特点

这里给大家介绍 Django 框架的主要特点,其他一些小优点,读者在学习过程中会慢慢体会:

  • 基于 Python 语言及 MVC 模式,具有开发快捷、低耦合、部署方便、可重用性高和维护成本低等显著特点。
  • 通过一个 URL 分发器模块进行 URL 分派,分发器使用正则表达式来匹配 URL,支持开发人员采用自定义 URL 方式,且没有框架的特定限定,使用起来非常灵活。
  • 可以方便地生成各种表单模型,实现表单的有效性检验,且支持从自定义的模型实例生成相应的表单。
  • 具有强大且可扩展的模板语言,支持分隔设计、内容和 Python 代码,并且具有可继承性。
  • 以 Python 类的形式定义数据模型,通过 ORM(对象关系映射)将模型与关系数据库进行连接,开发人员将得到一个非常容易使用的数据库 API,同时也支持在 Django 框架中直接使用原始 SQL 语句。
  • 内置国际化系统,支持开发多种语言的 Web 网站。
  • 缓存系统采用与 memcached、Redis 等缓存系统联用的方式,提高了页面的加载速度。
  • 内置了一个可视化的、自动化管理员界面(Admin Site),其类似于一个 CMS 系统(内容管理系统),开发人员可以方便快捷地通过该界面进行人员管理和内容更新等操作。

标签:框架,URL,视图,Django,原理,django,模板,View
From: https://www.cnblogs.com/bql123456/p/17509572.html

相关文章

  • VUE框架组件中通信方式(3)
    useAttrs使用方式类似于props传值,useAttrs既可以传数据,也可以传事件。如果父组件给子组件传递的参数,在子组件中同时使用props和useAttrs获取,那么参数只在props中生效,也就是说props的优先级高于useAttrs。示例代码如下://template><div><h1>useAttrs</h1><el-but......
  • 终于找到了一篇文章!通俗地讲解面向对象的工作原理
    日语中有一句杂俳,大意是“看不懂药品的疗效说明书,反而让人觉得药很有效”。 面向对象也有类似之处。“封装、多态和继承三种结构”“现实世界和软件是无缝的”等,当第一次听到这些时,相信不少人都会觉得“虽然不是很明白,但好像很厉害的样子”。 今天就来通俗地给大家介绍面向对象编......
  • django基础
    创建django目录"d:\python"startproject项目名称搭建app#创建apppythonmanage.pystartappapp01#在setting上注册appINSTALLED_APPS=['app01.apps.App01Config',]#在views上写逻辑defindex(request):returnHttpResponse("欢迎使用django&q......
  • 模拟HTTP测试post请求与get请求方式的工作原理与抓包分析
    一,工作原理与简介HTTP请求是客户端向服务器发送请求的过程,常见的HTTP请求方法有GET和POST。如下图,HTTP新建请求过程(1)GET请求的工作原理是,客户端向服务器发送一个请求,请求中包含要获取的资源路径和参数,服务器根据路径和参数返回相应的资源。GET请求可以在URL中传递参数,参数以键......
  • Taurus .Net Core 微服务开源框架:Admin 插件【2】 - 系统环境信息管理
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【1】-微服务节点管理本篇继续介绍下一个内容:1、系统环境信息节点- OS-Environment界面 基本信息如上图,重点的几个参数:1、App-StartTime:应用程序启用时间,可以在更新程序或配置文件后,查看该时间,看应用程序是否更......
  • JavaScript Framework Unpoly 框架介绍
    作为一种创建Web应用程序的更直接的方式,无需使用太多JavaScript,HTML在线技术一直在蓬勃发展。它的工作原理是通过网络发送HTML,而不是JSON。现在,一种名为Unpoly的新JavaScript框架已经成为Basecamp的HTML在线框架Hotwire的竞争者。Unpoly承诺“为服务器渲染的H......
  • HTML Over the wire 框架 Unpoly 和 React 的使用场合比较
    Unpoly是一个轻量级的JavaScript框架,它允许您通过HTMLoverthewire的方式进行Web应用程序开发。HTMLoverthewire是一种网络通信模式,它将由服务器生成的HTML片段作为响应发送给客户端,而不是传统的JSON数据。这样,服务器端可以处理更多逻辑,而客户端可以专注于渲染和......
  • HTML Over the wire 框架和单页面应用的区别
    HTMLOverthewire方法包括类似于多页面应用程序(MPA)的服务器端渲染(SSR)。然而,在初始请求之后,浏览器仅通过AJAX异步检索HTML片段,因此整个页面不再重新渲染。与单页应用程序(SPA)不同,服务器还处理应用程序的逻辑和状态:[图片]单页面应用(SinglePageApplication,简......
  • HTML Over the wire 的代表框架 hotwire 介绍
    HTMLover-the-wire作为一种更直接的创建Web应用程序的方式而不需要使用太多JavaScript,已经逐渐流行起来。它通过“htmloverthewire”的思路,发送HTML而不是JSON来实现。现在,一种名为Unpoly的“非侵入式JavaScript框架”出现,成为Basecamp的HTMLover-the-wire框架Hotwire的竞争......
  • pytest + yaml 框架 -43.支持自定义函数提取返回结果
    前言在yaml用例中提取返回结果,可以支持以下三种表达式jmespath取值语法:body.keyname.keynamejsonpath语法:$..keynamere正则语法以上三种表达式可以满足99%的测试场景需求了,但是有些特殊的需求通过表达式无法取到,为了满足另外1%的需求,可以自定义函数取值。此功......