一 MVC與MTV模型
1.1 MVC
Web服務器開發領域里著名的MVC模式,所謂MVC就是把Web應用分為模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件式的、松耦合的方式連接在一起,模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互(頁面),控制器接受用戶的輸入調用模型和視圖完成用戶的請求,其示意圖如下所示:

1.2 MTV
Django的MTV模式本質上和MVC是一樣的,也是為了各組件間保持松耦合關系,只是定義上有些許不同,Django的MTV分別是值:
- M 代表模型(Model): 負責業務對象和數據庫的關系映射(ORM)。
- T 代表模板 (Template):負責如何把頁面展示給用戶(html)。
- V 代表視圖(View): 負責業務邏輯,並在適當時候調用Model和Template。
除了以上三層之外,還需要一個URL分發器,它的作用是將一個個URL的頁面請求分發給不同的View處理,View再調用相應的Model和Template,MTV的響應模式如下所示:

一般是用戶通過瀏覽器向我們的服務器發起一個請求(request),這個請求回去訪問視圖函數,(如果不涉及到數據調用,那么這個時候視圖函數返回一個模板也就是一個網頁給用戶),視圖函數調用模型,模型去數據庫查找數據,然后逐級返回,視圖函數把返回的數據填充到模板中空格中,最后返回網頁給用戶。
二 Django的下載與基本命令
2.1 下載Django
方式一:在命令行輸入:pip3 install django
pip install django==1.11.9 -i http://pypi.hustunique.org/simple 指定版本號,指定國內鏡像
方式二:用pycharm安裝
方式三:用pycharm的Terminal的命令行安裝
2.2 創建一個django project
django-admin.py startproject mysite
當前目錄下會生成mysite的工程,目錄結構如下:

- manage.py ----- Django項目里面的工具,通過它可以調用django shell和數據庫等。
- settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試標志以及其他一些工作的變量。
- urls.py ----- 負責把URL模式映射到應用程序。
2.3 在mysite目錄下創建應用
python manage.py startapp blog

2.4 啟動django項目
python manage.py runserver 8001
這樣我們的django就啟動起來了!當我們訪問:http://127.0.0.1:8080/時就可以看到:

三 基於Django實現的一個簡單示例
3.1 URL控制器
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/',views.index),
]
3.2 視圖
from django.shortcuts import render
def index(request):
import datetime
now=datetime.datetime.now()
ctime=now.strftime("%Y-%m-%d %X")
return render(request,"index.html",{"ctime":ctime})
3.3 模版
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>當前時間:{{ ctime }}</h4>
</body>
</html>
四 Django靜態文件配置
4.1 static
新建一個目錄叫:static,我們的css文件,js文件,圖片文件都放在這下面
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
4.2 mycss.css
h4{
color:red;
}
4.3 myjs.js
$('h4').click(function () {
$(this).css("color","green");
})
4.4 insex.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/mycss.css">
<script src="/static/jquery-3.3.1.js"></script>
</head>
<body>
<h4>我是紅色,點擊變綠</h4>
</body>
<script src="/static/myjs.js"></script>
</html>
五 Django請求生命周期
六 Django與其他web框架
'''
a socket服務端
b 根據url不同返回不同的內容
url---視圖函數
c 字符串返回給用戶
特殊字符替換
Web框架種類:
a b c Tornado
別人的a b c django(a用的wsgiref)
別人a b 別人c flask(c用的jinja2)
另一種分類:
Django和其它
'''