Web服務器開發領域裏著名的MVC模式,所謂MVC就是把Web應用分爲模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件式的、鬆耦合的方式鏈接在一塊兒,模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互(頁面),控制器接受用戶的輸入調用模型和視圖完成用戶的請求,其示意圖以下所示:html
Django的MTV模式本質上和MVC是同樣的,也是爲了各組件間保持鬆耦合關係,只是定義上有些許不一樣,Django的MTV分別是值:python
M 表明模型(Model): 負責業務對象和數據庫的關係映射(ORM)。linux
T 表明模板 (Template):負責如何把頁面展現給用戶(html)。web
V 表明視圖(View): 負責業務邏輯,並在適當時候調用Model和Template。數據庫
除了以上三層以外,還須要一個URL分發器,它的做用是將一個個URL的頁面請求分發給不一樣的View處理,View再調用相應的Model和Template,MTV的響應模式以下所示:django
通常是用戶經過瀏覽器向咱們的服務器發起一個請求(request),這個請求回去訪問視圖函數,(若是不涉及到數據調用,那麼這個時候視圖函數返回一個模板也就是一個網頁給用戶),視圖函數調用模型,模型去數據庫查找數據,而後逐級返回,視圖函數把返回的數據填充到模板中空格中,最後返回網頁給用戶。瀏覽器
pip3 install django # 沒有參數,默認下載最新版本服務器
pip3 install django==1.11.x # 指定Django的下載版本(如今通常是2.2.*版本)app
若是pip3不行能夠須要安裝pip3或者使用pip函數
運行安裝Django例:
pip3 install django==2.2.3
查看Django安裝版本:
python3 -m django --version
官網版本使用時間條:
Django 版本對應的 Python 版本:
步驟以下圖所示:
下面的命令建立了一個名爲demo的Django 項目:
django-admin startproject demo #demo爲項目名
root@hsz:/home/hsz/djangodemo# django-admin startproject demo
root@hsz:/home/hsz/djangodemo# ls
demo
root@hsz:/home/hsz/djangodemo# tree demo
demo #項目根目錄
├── demo #項目名稱
│ ├── __init__.py
│ ├── settings.py #項目配置相關
│ ├── urls.py #url路徑
│ └── wsgi.py #wsgi
└── manage.py #管理相關
1 directory, 5 files
root@hsz:/home/hsz/djangodemo#
對於linux先找下python3的安裝目錄,若是使用python2開發找到python,以下截圖:
命令:which python3
進入pycharm-file ---> new project ---->選擇Django ---> 配置路徑和項目名稱 ---> 配置環境(默認用系統環境)即在Existing interpreter 中找到環境目錄導入 ----> 點擊create(完成建立)
Location on選擇項目建立的目錄和項目名
項目目錄詳細介紹:
|---mydemo # 項目的/目錄
|---mydemo # 項目目錄
|---__init__.py
|---settings.py # 配置文件
|---urls.py # 路由系統 ===> url與視圖的對應關係
|---wsgi.py # runserver命令就使用wsgiref模塊作簡單的web server
|---manage.py # 管理文件
python3 manage.py startapp app01 #app01爲app名稱
在settings.py裏的INSTALLED_APPS列表中,添加註冊app。
在INSTALLED_APPS最後添加下面一句:
有兩種方法:
a、INSTALLED_APPS = [..., "app01', ...]
b、INSTALLED_APPS = [..., "app01.apps.App01Config', ...] # 推薦這種寫法
以下:
root@hsz:/home/hsz/djangodemo/demo# tree app01
app01 #app名稱
├── admin.py #Django自帶admin相關
├── apps.py #app相關
├── __init__.py
├── migrations #數據模型遷移記錄
│ └── __init__.py
├── models.py #數據映射關係相關
├── tests.py
└── views.py #業務邏輯視圖相關
使用pycharm建立以下:
python manage.py runserver # 127.0.0.1:8000
python manage.py runserver 80 # 127.0.0.1:80
python manage.py runserver 0.0.0.0:8888 # 0.0.0.0:8888#
注意:要在manage.py同級目錄執行命令
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('timer/', views.timer),
]
from django.shortcuts import render
# Create your views here.
#編寫視圖函數
def timer(request):
import datetime
now_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
return render(request, "timer.html", {"now_time": now_time})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>time</title>
</head>
<body>
<h3>當前時間爲:{{ now_time }}</h3>
</body>
</html>