Django框架(一):MVC設計模式、Django簡介

来源:https://www.cnblogs.com/liuhui0308/archive/2020/01/14/12189658.html
-Advertisement-
Play Games

1. MVC設計模式 MVC設計模式:Model-View-Controller簡寫。 最早由TrygveReenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程式語言Smalltalk發明的一種軟體設計模式,是為了將傳統的輸入(input)、處理(p ...


1. MVC設計模式

MVC設計模式:Model-View-Controller簡寫。

最早由TrygveReenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程式語言Smalltalk發明的一種軟體設計模式,是為了將傳統的輸入(input)、處理(processing)、輸出(output)任務運用到圖形化用戶交互模型中而設計的。隨著標準輸入輸出設備的出現,開發人員只需要將精力集中在業務邏輯的分析與實現上。後來被推薦為Oracle旗下Sun公司Java EE平臺的設計模式,並且受到越來越多的使用ColdFusion和PHP的開發者的歡迎。現在雖然不再使用原來的分工方式,但是這種分工的思想被沿用下來,廣泛應用於軟體工程中,是一種典型並且應用廣泛的軟體架構模式。後來,MVC的思想被應用在了Web開發方面,被稱為Web MVC框架。

MVC是軟體工程中常用的軟體架構模式,它是一種分離業務邏輯與顯示界面的設計方法。它把軟體系統分為三個基本部門:模型(Model)、視圖(View)和控制器(Controller)。

  • 控制器Controller:對請求進行處理,負責請求轉發。
  • 視圖View:界面設計人員進行圖形界面設計。
  • 模型Model:編寫程式應用的功能(實現演算法等等)、資料庫管理。

MVC框架的核心思想是:解耦,讓不同的代碼塊之間降低耦合,增強代碼的可擴展性和可移植性,實現向後相容。

當前主流的開發語言如Java、PHP、Python中都有MVC框架。

2. Django簡介

2.1 MTV設計模式

Django的MTV模式本質上和MVC是一樣的,也是為了各組件間保持松耦合關係,只是定義上有些許不同,Django的MTV分別是值:

  • M 代表模型(Model):負責業務對象和資料庫的關係映射(ORM)。
  • T 代表模板 (Template):負責如何把頁面展示給用戶(html)。
  • V 代表視圖(View):負責業務邏輯,併在適當時候調用Model和Template。

除了以上三層之外,還需要一個URL分發器,它的作用是將一個個URL的頁面請求分發給不同的View處理,View再調用相應的Model和Template,MTV的響應模式如下所示:

 一般是用戶通過瀏覽器向我們的伺服器發起一個請求(request),這個請求回去訪問視圖函數,(如果不涉及到數據調用,那麼這個時候視圖函數返回一個模板也就是一個網頁給用戶),視圖函數調用模型,模型去資料庫查找數據,然後逐級返回,視圖函數把返回的數據填充到模板中空格中,最後返回網頁給用戶。

2.2 Django的簡單使用

2.2.1 Django的安裝

pip install django -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

2.2.2 創建Django項目

我們以最常見的電商網站為例,網站上有跟用戶有關的頁面,有跟商品有關的頁面,還有跟訂單有關的頁面,這樣的一塊內容其實就是網站的一個功能模塊。

在django中,項目的組織結構為一個項目包含多個應用,一個應用對應一個業務模塊。

創建項目的命令如下:

django-admin startproject 項目名稱

創建一個項目,項目名為djangotest。

django-admin startproject djangotest

然後我們查看下djangotest的目錄。

2.2.3 項目預設目錄說明

manage.py是項目管理文件,通過它管理項目。 

然後就是與項目同名的目錄,此處為djangotest。

  • _init_.py是一個空文件,作用是這個目錄test1可以被當作包使用。
  • asgi.py是項目的asgi配置文件。
  • settings.py是項目的整體配置文件。
  • urls.py是項目的URL配置文件。
  • wsgi.py是項目與WSGI相容的Web伺服器入口。

2.2.4 創建應用

使用一個應用開發一個業務模塊,此處創建應用名稱為booktest,完成圖書的信息維護。

python manage.py startapp booktest

  • _init.py_是一個空文件,表示當前目錄booktest可以當作一個python包使用。
  • tests.py文件用於開發測試用例,在實際開發中會有專門的測試人員,這個事情不需要我們來做。
  • models.py文件跟資料庫操作相關。
  • views.py文件跟接收瀏覽器請求,進行處理,返回頁面相關。
  • admin.py文件跟網站的後臺管理相關。
  • apps文件夾是django1.10之後增加的,通常裡面包含對應用的配置。

2.2.5 安裝應用 

應用創建成功後,需要安裝才可以使用,也就是建立應用和項目之間的關聯,在djangotest/settings.py中INSTALLED_APPS下添加應用的名稱就可以完成安裝。 

初始項目的INSTALLED_APPS:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

接下來在元組中添加一個新的項,當前示例為booktest:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'booktest',
]

2.2.6 開發伺服器

在開發階段,為了能夠快速預覽到開發的效果,django提供了一個純python編寫的輕量級web伺服器,僅在開發階段使用。

運行伺服器命令:

python manage.py runserver ip:埠

可以不寫IP和埠,預設IP是127.0.0.1,預設埠為8000。

伺服器啟動成功:

緊接著在瀏覽器中輸入網址“127.0.0.1:8000”,可以查看當前站點開發效果。

如果增加、修改、刪除文件,伺服器會自動重啟;
按ctrl+c停止伺服器。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redis常用的數據類型: String Hash List Set zSet Sorted set String類型 判斷是否有key所對應的值,有則返回true,沒有則返回false redisTemplate.hasKey(key) 有則取出key值所對應的值 redisTemplate.op ...
  • 數據結構(Data structure):是電腦組織數據和存儲數據的方式,是指一組相互之間存在一種或多種特定關係的數據的組織方式和它們在電腦內的存儲方式,以及定義在該組數據上的一組操作。 ...
  • 操作系統:Windows7 64bit Python版本:3.8下載地址:https://www.python.org/downloads/release/python-380/,選擇下方的Windows x86-64 executable installer 安裝步驟: 雙擊安裝文件python- ...
  • 最近困擾自己很久的膝蓋積液手術終於做完,在家養傷,逛技術博客看到easyswoole開發組成員仙士可博客有關mysql索引方面的知識,自己打算重溫下。 正常業務起步數據表數據量較少,不用考慮使用索引,當後期累積的數據數量非常可觀時,使用索引是提升查詢的一條途徑,其他的像表分區,分庫分表等等。 【索引 ...
  • 計數排序是需要假設輸入數據的排序之一,它假設輸入元素是0到k區間內的一個整數,其中k為某個整數。當k=O(n)時,計數排序的時間複雜度為θ(n)。 因為不是通過比較來排序,所以它的時間複雜度可以達到θ(nlgn)以下。 計數排序是穩定的排序之一。 代碼如下:(僅供參考) //計數排序期望輸入數據都是 ...
  • 安全與加密 無論是開發Web應用的開發者還是企圖利用Web應用漏洞的攻擊者,對於Web程式安全這個話題都給予了越來越多的關註。特別是最近CSDN密碼泄露事件,更是讓我們對Web安全這個話題更加重視,所有人都談密碼色變,都開始檢測自己的系統是否存在漏洞。那麼我們作為一名Go程式的開發者,一定也需要知道 ...
  • 歸併排序利用分治策略進行排序。原理如下 分解:分解待排的n個元素的序列成個具n/2個元素的兩個子序列。 解決:使用歸併排序遞歸地排序兩個子序列。 合併:合併兩個已排序的子序列以產生已排序的答案。 歸併排序的時間複雜度是θ(nlgn)。 歸併排序是穩定排序之一。 歸併排序不是原址排序,在合併階段需要申 ...
  • 插入排序是最常用的排序之一。 在輸入規模較小的時候,插入排序的性能較好。 最好情況下插入排序的時間複雜度是O(n),平均情況則為O(n2)。 插入排序是穩定的排序演算法之一。 基本思路為從第二個元素開始,依次插入前面已經排好序的序列,利用迴圈不變式很容易理解。 代碼如下:(僅供參考) 1 void I ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...