一、Web框架與Django本質
1、Web框架的理解
框架,特指爲解決一個開放性問題而設計的具有一定約束性的支撐結構,使用框架可以幫你快速開發特定的系統。對於所有的Web應用,實際上就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。
2、Django的本質
Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MTV的框架模式,即模型M,視圖V和模版T。簡單來說,就是Django給我們提供了一個非常完善的Web框架,是目前Python搭建項目最好用的框架。我們只需要對其中的文件進行修改與增加內容,就能輕鬆實現請求與響應的基本功能,最終渲染出對應的網頁。
3、MVC模式
MVC就是把web應用分爲模型(M),控制器©,視圖(V)三層;他們之間以一種插件似的,鬆耦合的方式連接在一起。模型負責業務對象與數據庫的對象(ORM),視圖負責與用戶的交互(頁面),控制器©接受用戶的輸入調用模型和視圖完成用戶的請求。
4、MTV模式
MTV模式本質上與MVC模式沒有什麼差別,也是各組件之間爲了保持鬆耦合關係,只是定義上有些許不同:
- Model(模型):負責業務對象與數據庫的對象(ORM)
- Template(模版):負責如何把頁面展示給用戶
- View(視圖):負責業務邏輯,並在適當的時候調用Model和Template
另外還有一個路由分發器,即url分發器,它能將一個個URL的頁面請求分發給不同的view處理,view再調用相應的Model和Template。 - URL(路由分發):負責分發鏈接並綁定對應函數的
5、Django的框架
圖片引自:老男孩python運維開發資料
二、從安裝到實現一個完整的Django項目
1、Django的安裝
在cmd命令行窗口中,進入Python的安裝目錄,再進入目錄Scripts,然後的輸入pip install django
2、創建一個Django項目
依然是在命令行窗口中,先cd進入你需要創建項目的目錄中或者Django的bin目錄中,再輸入django-admin startproject 項目名
,就可以創建一個Django項目了
創建完一個項目之後,相當於有了一個框架,但是我還需要創建一個應用或者多個,每一個應用就是一個功能,比如QQ有聊天功能,還有瀏覽空間的功能。manage.py startapp 項目名
,比如我輸入
manage.py startapp blog
- manage.py文件:就是整個項目的執行文件
在我們創建的這個blog應用裏面,有其中幾個重要文件對應的功能是:
另外,mysite目錄是一個全局作用的,在裏面有
- urls.py文件:路由分發功能的實現
- settings.py文件:存放於該Django項目相關的所有配置信息
在settings.py裏面我們需要將自定義的應用也添加進去:
3、在pycharm中創建Django項目
在pycharm中創建完一個項目之後,假如我們要實現一個進入自定義的一個網址,服務端就會返回一個準確的時間。首先我們在urls.py文件裏添加上這個路徑並綁定應用函數:
然後我們在創建的應用文件夾裏的views.py文件裏寫上我們的顯示時間的函數:
然後我們需要導入views.py文件,才能調用那個顯示時間的應用函數:
4、返回一個時間
templates:用來存放頁面(html文件)的目錄
返回頁面需要帶上形參:
return render(req,"index.html")
在html文件中兩個大括號渲染的變量,在python中定義同名的變量,然後可以用locals()直接引用:
# html文件中
<h2>Now:{{ t }}</h2>
# python文件中
t=time.ctime()
return render(req,"index.html",locals())
5、啓動Django項目
runserver:啓動Django項目(在終端中輸入)
然後就會返回一個網址,這個就是我們訪問的主頁:
6、Django項目效果
這樣,一個最簡單卻很完整的Django項目就完成了
7、views.py代碼
from django.shortcuts import render,HttpResponse
# 還必須導入HttpResponse模塊,纔可以將python定義的內容返回給前端去顯示
import time
# Create your views here.
# 這個req形參是瀏覽器發送給服務端的全部信息,服務端打包後傳入到該函數的一個對象
def show_time(req):
# return HttpResponse("Welcome to my blog!")
t=time.ctime()
return render(req,"index.html",locals())
可以看到在整個網頁的形成與渲染過程中,應用函數show_time僅僅只用了3行代碼就實現了,可以說Django是非常得高效與便捷