0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

lDjango項目與應(yīng)用構(gòu)建的原理

汽車電子技術(shù) ? 來源:碼農(nóng)與軟件時代 ? 作者:碼農(nóng)與軟件時代 ? 2023-02-14 14:40 ? 次閱讀

在讀完《初識Django:簡單Web應(yīng)用示例》(以下簡稱《示例》)后,你或許學(xué)會了如何使用Django框架來構(gòu)建應(yīng)用,但為什么要這樣來做?其背后的原理是什么?你或許有些懵,本文將帶你理解:

lDjango請求處理流程;

lDjango設(shè)計方法。

一、Django請求處理流程

1.項目與應(yīng)用代碼詳單

《示例》中我們所構(gòu)建的Web應(yīng)用代碼文件,分為項目WebPro和應(yīng)用WebApp,詳情如下:

圖片

2.Django請求處理流程

打開瀏覽器,輸入127.0.0.1:8000/hello-post,瀏覽器將請求發(fā)送到127.0.0.1服務(wù)器(本機)8000端口。

(1).根據(jù)hello_post查詢對應(yīng)的處理函數(shù):Django框架加載urls.py,代碼行url(r'^hello-post$', views.hello_post)標(biāo)識hello-post的請求由views.hello_post函數(shù)處理。

圖片

(2).業(yè)務(wù)處理:views.py的Hello_post函數(shù)查詢數(shù)據(jù)庫的title值,并將Hello與其拼接成ctx[‘wname’],將其發(fā)送給hello.html。

圖片

(3).頁面顯示:Hello.html將wname值進(jìn)行替換,生成可展示的視圖。

圖片

圖片

(4).請求流程以頁面正確顯示結(jié)束,這里需要關(guān)注的是本項目中事先定義了Model,該模型的定義在models.py文件中。

圖片

二、 Django設(shè)計原理

通過上面的分析,我們大致可以體會到:使用models.py定義數(shù)據(jù)模型,使用views.py編寫后臺業(yè)務(wù)處理邏輯,使用templates/hello.html展示可視化信息。簡單地說,從前端頁面請求到后臺數(shù)據(jù)的處理再到數(shù)據(jù)的頁面顯示,可以描述成model-view-template,即M-V-T。

事實上,Web框架經(jīng)常地采用MVC(Model View Controller)設(shè)計方法,該方法是在研究Smalltalk-80期間設(shè)計的,采用一種將業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼。

lM-Model:封裝數(shù)據(jù)和數(shù)據(jù)的處理方法,用于業(yè)務(wù)的數(shù)據(jù)建模。

lV-View:定義Web頁面的視圖,用于和用戶交互。

lC-Controller:定義用戶頁面對用戶輸入的響應(yīng)方式,用于控制Web應(yīng)用的流程。

圖片

現(xiàn)在再回過來看Django的MVT模式,與上述的MVC的映射關(guān)系:

Web應(yīng)用框架 Django
M-Model M-Model
V-View T-Template
C-Controller V-View
通過上面的分析,Django項目與應(yīng)用構(gòu)建的原理便清晰可見了。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)模型
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    10011
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1194

    瀏覽量

    20942
  • Models
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    20698
收藏 人收藏

    評論

    相關(guān)推薦

    Gradle構(gòu)建的多模塊Spring Boot項目

    0. 前言 相比起 Maven 的 XML 配置方式,Gradle 提供了一套簡明的 DSL 用于構(gòu)建Java 項目,使我們就像編寫程序一樣編寫項目構(gòu)建腳本。 本文將從無到有創(chuàng)建一個用
    的頭像 發(fā)表于 09-25 14:46 ?2975次閱讀
    Gradle<b class='flag-5'>構(gòu)建</b>的多模塊Spring Boot<b class='flag-5'>項目</b>

    如何使項目構(gòu)建輸出到lib文件?

    如何使項目構(gòu)建輸出到lib文件? #輸出LIB文件以上來自于谷歌翻譯以下為原文 how to make the projectbuild output to a lib file?#output-lib-file
    發(fā)表于 01-21 17:33

    如何知道xilinx的哪個版本用于構(gòu)建項目?

    大家好。 我收到了一個項目文件,如何知道xilinx的哪個版本用于構(gòu)建項目?謝謝納文
    發(fā)表于 03-20 06:33

    8086工程構(gòu)建項目時報錯

    main.asm 文件編譯正常,但是構(gòu)建項目報這個錯誤。操作系統(tǒng): win10 64位proteus版本: proteus8.7 SP3
    發(fā)表于 11-05 21:42

    如何使用Keil MDK-ARM編譯器構(gòu)建項目

    前言本教程展示了如何使用VisualGDB使用Keil MDK-ARM編譯器構(gòu)建項目,使用VisualGDB智能感知包括CodeMap,并使用Visual Studio調(diào)試它。步驟在開始之前,確保您
    發(fā)表于 02-09 06:57

    如何使用GitHub構(gòu)建STM32CubeIDE項目?

    我正在考慮將 GitHub 操作用于 CI/CD。我找不到任何有關(guān)如何使用 GitHub 操作自動構(gòu)建 STM32CubeIDE 項目的示例。任何提示/方向?
    發(fā)表于 12-08 06:40

    使用STM32CubeIDE構(gòu)建項目圖標(biāo)進(jìn)行構(gòu)建時,鏈接失敗的原因是什么?

    否對任何文件進(jìn)行了更改?如果不是,則該工具正在做正確的事情。如果單擊菜單Project > Clean,系統(tǒng)會詢問您是清理(并構(gòu)建?)所選項目還是工作區(qū)中的所有項目。對 STM32 開發(fā)來說非常無用
    發(fā)表于 12-09 07:42

    MIMXRT106S項目構(gòu)建失敗的原因?怎么解決?

    我正在嘗試使用項目創(chuàng)建向?qū)г?MCUExpresso IDE 中為 MIMXRT106S 處理器創(chuàng)建一個基本項目。 創(chuàng)建項目后,我嘗試構(gòu)建它,但失敗并出現(xiàn) 7 個錯誤。 該處理器是否有
    發(fā)表于 05-31 07:00

    使用MDK構(gòu)建Mbed操作系統(tǒng)項目

    、RTOS以及傳感器和I/O設(shè)備的驅(qū)動程序。 Med OS本身并不以CMSIS包的形式提供,但有自己的配置和依賴管理系統(tǒng)。 本應(yīng)用筆記展示了如何通過將項目從med在線編譯器遷移到MDK來開始使用MDK-Community版本(或任何其他MDK版本)構(gòu)建med OS
    發(fā)表于 08-25 07:01

    Grindbit的構(gòu)建開源項目

    電子發(fā)燒友網(wǎng)站提供《Grindbit的構(gòu)建開源項目.zip》資料免費下載
    發(fā)表于 10-21 09:44 ?1次下載
    Grindbit的<b class='flag-5'>構(gòu)建</b>開源<b class='flag-5'>項目</b>

    可以在家中構(gòu)建的最酷的Arduino項目

    電子發(fā)燒友網(wǎng)站提供《可以在家中構(gòu)建的最酷的Arduino項目.zip》資料免費下載
    發(fā)表于 11-17 10:35 ?0次下載
    可以在家中<b class='flag-5'>構(gòu)建</b>的最酷的Arduino<b class='flag-5'>項目</b>

    使用Launchpad和Energia構(gòu)建的開源項目

    電子發(fā)燒友網(wǎng)站提供《使用Launchpad和Energia構(gòu)建的開源項目.zip》資料免費下載
    發(fā)表于 12-19 11:03 ?1次下載
    使用Launchpad和Energia<b class='flag-5'>構(gòu)建</b>的開源<b class='flag-5'>項目</b>

    機器人項目構(gòu)建

    電子發(fā)燒友網(wǎng)站提供《機器人項目構(gòu)建.zip》資料免費下載
    發(fā)表于 02-08 10:05 ?0次下載
    機器人<b class='flag-5'>項目</b><b class='flag-5'>構(gòu)建</b>

    互聯(lián)蜂箱的構(gòu)建項目

    電子發(fā)燒友網(wǎng)站提供《互聯(lián)蜂箱的構(gòu)建項目.zip》資料免費下載
    發(fā)表于 07-13 11:03 ?0次下載
    互聯(lián)蜂箱的<b class='flag-5'>構(gòu)建</b><b class='flag-5'>項目</b>

    CMake構(gòu)建后的項目結(jié)構(gòu)解析

    一、 CMake構(gòu)建后的項目結(jié)構(gòu)解析(Analysis of the Project Structure After CMake Build) 1.1 CMake構(gòu)建后的目錄結(jié)構(gòu)(Directory
    的頭像 發(fā)表于 11-10 10:27 ?2078次閱讀
    CMake<b class='flag-5'>構(gòu)建</b>后的<b class='flag-5'>項目</b>結(jié)構(gòu)解析