0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

lDjango项目与应用构建的原理

汽车电子技术 来源:码农与软件时代 作者:码农与软件时代 2023-02-14 14:40 次阅读

在读完《初识Django:简单Web应用示例》(以下简称《示例》)后,你或许学会了如何使用Django框架来构建应用,但为什么要这样来做?其背后的原理是什么?你或许有些懵,本文将带你理解:

lDjango请求处理流程;

lDjango设计方法。

一、Django请求处理流程

1.项目与应用代码详单

《示例》中我们所构建的Web应用代码文件,分为项目WebPro和应用WebApp,详情如下:

图片

2.Django请求处理流程

打开浏览器,输入127.0.0.1:8000/hello-post,浏览器将请求发送到127.0.0.1服务器(本机)8000端口

(1).根据hello_post查询对应的处理函数:Django框架加载urls.py,代码行url(r'^hello-post$', views.hello_post)标识hello-post的请求由views.hello_post函数处理。

图片

(2).业务处理:views.py的Hello_post函数查询数据库的title值,并将Hello与其拼接成ctx[‘wname’],将其发送给hello.html。

图片

(3).页面显示:Hello.html将wname值进行替换,生成可展示的视图。

图片

图片

(4).请求流程以页面正确显示结束,这里需要关注的是本项目中事先定义了Model,该模型的定义在models.py文件中。

图片

二、 Django设计原理

通过上面的分析,我们大致可以体会到:使用models.py定义数据模型,使用views.py编写后台业务处理逻辑,使用templates/hello.html展示可视化信息。简单地说,从前端页面请求到后台数据的处理再到数据的页面显示,可以描述成model-view-template,即M-V-T。

事实上,Web框架经常地采用MVC(Model View Controller)设计方法,该方法是在研究Smalltalk-80期间设计的,采用一种将业务逻辑、数据、界面显示分离的方法组织代码。

lM-Model:封装数据和数据的处理方法,用于业务的数据建模。

lV-View:定义Web页面的视图,用于和用户交互。

lC-Controller:定义用户页面对用户输入的响应方式,用于控制Web应用的流程。

图片

现在再回过来看Django的MVT模式,与上述的MVC的映射关系:

Web应用框架 Django
M-Model M-Model
V-View T-Template
C-Controller V-View
通过上面的分析,Django项目与应用构建的原理便清晰可见了。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据模型
    +关注

    关注

    0

    文章

    44

    浏览量

    9961
  • 可视化
    +关注

    关注

    1

    文章

    1021

    浏览量

    20556
  • Models
    +关注

    关注

    0

    文章

    74

    浏览量

    20573
收藏 人收藏

    评论

    相关推荐

    Gradle构建的多模块Spring Boot项目

    0. 前言 相比起 Maven 的 XML 配置方式,Gradle 提供了一套简明的 DSL 用于构建Java 项目,使我们就像编写程序一样编写项目构建脚本。 本文将从无到有创建一个用
    的头像 发表于 09-25 14:46 1201次阅读
    Gradle<b class='flag-5'>构建</b>的多模块Spring Boot<b class='flag-5'>项目</b>

    如何使项目构建输出到lib文件?

    如何使项目构建输出到lib文件? #输出LIB文件以上来自于谷歌翻译以下为原文 how to make the projectbuild output to a lib file?#output-lib-file
    发表于 01-21 17:33

    如何知道xilinx的哪个版本用于构建项目

    大家好。 我收到了一个项目文件,如何知道xilinx的哪个版本用于构建项目?谢谢纳文
    发表于 03-20 06:33

    8086工程构建项目时报错

    main.asm 文件编译正常,但是构建项目报这个错误。操作系统: win10 64位proteus版本: proteus8.7 SP3
    发表于 11-05 21:42

    如何使用Keil MDK-ARM编译器构建项目

    前言本教程展示了如何使用VisualGDB使用Keil MDK-ARM编译器构建项目,使用VisualGDB智能感知包括CodeMap,并使用Visual Studio调试它。步骤在开始之前,确保您
    发表于 02-09 06:57

    如何使用GitHub构建STM32CubeIDE项目

    我正在考虑将 GitHub 操作用于 CI/CD。我找不到任何有关如何使用 GitHub 操作自动构建 STM32CubeIDE 项目的示例。任何提示/方向?
    发表于 12-08 06:40

    使用STM32CubeIDE构建项目图标进行构建时,链接失败的原因是什么?

    否对任何文件进行了更改?如果不是,则该工具正在做正确的事情。如果单击菜单Project > Clean,系统会询问您是清理(并构建?)所选项目还是工作区中的所有项目。对 STM32 开发来说非常无用
    发表于 12-09 07:42

    使用TouchGFX构建项目未正确初始化堆怎么办

    你好使用 TouchGFX 构建项目未正确初始化堆:尝试将变量分配给堆时,变量分配在 0x00000000 而不是堆位置。使用 cube 构建项目不会发生这种情况。有没有人有任何想
    发表于 12-09 06:00

    MIMXRT106S项目构建失败的原因?怎么解决?

    我正在尝试使用项目创建向导在 MCUExpresso IDE 中为 MIMXRT106S 处理器创建一个基本项目。 创建项目后,我尝试构建它,但失败并出现 7 个错误。 该处理器是否有
    发表于 05-31 07:00

    使用MDK构建Mbed操作系统项目

    、RTOS以及传感器和I/O设备的驱动程序。 Med OS本身并不以CMSIS包的形式提供,但有自己的配置和依赖管理系统。 本应用笔记展示了如何通过将项目从med在线编译器迁移到MDK来开始使用MDK-Community版本(或任何其他MDK版本)构建med OS
    发表于 08-25 07:01

    Grindbit的构建开源项目

    电子发烧友网站提供《Grindbit的构建开源项目.zip》资料免费下载
    发表于 10-21 09:44 1次下载
    Grindbit的<b class='flag-5'>构建</b>开源<b class='flag-5'>项目</b>

    使用Launchpad和Energia构建的开源项目

    电子发烧友网站提供《使用Launchpad和Energia构建的开源项目.zip》资料免费下载
    发表于 12-19 11:03 1次下载
    使用Launchpad和Energia<b class='flag-5'>构建</b>的开源<b class='flag-5'>项目</b>

    机器人项目构建

    电子发烧友网站提供《机器人项目构建.zip》资料免费下载
    发表于 02-08 10:05 0次下载
    机器人<b class='flag-5'>项目</b><b class='flag-5'>构建</b>

    互联蜂箱的构建项目

    电子发烧友网站提供《互联蜂箱的构建项目.zip》资料免费下载
    发表于 07-13 11:03 0次下载
    互联蜂箱的<b class='flag-5'>构建</b><b class='flag-5'>项目</b>

    CMake构建后的项目结构解析

    一、 CMake构建后的项目结构解析(Analysis of the Project Structure After CMake Build) 1.1 CMake构建后的目录结构(Directory
    的头像 发表于 11-10 10:27 407次阅读
    CMake<b class='flag-5'>构建</b>后的<b class='flag-5'>项目</b>结构解析