一、Django 處理 HTTP 請求
Web 應(yīng)用的交互過程其實(shí)就是 HTTP 請求與響應(yīng)的過程。
Django 作為一個(gè) Web 框架,也能接收瀏覽器發(fā)來的 HTTP 請求,返回相應(yīng)的 HTTP 響應(yīng)。那么:
- Django 如何接收 HTTP 請求?
- Django 如何處理這個(gè) HTTP 請求?
- Django 如何生成 HTTP 響應(yīng)?
對(duì)于如何處理這些問題,Django 有其一套規(guī)定的機(jī)制。我們按照 Django 的規(guī)定,就能開發(fā)出所需的功能。
Django 如何接收 HTTP 請求
Django 接收 HTTP 請求,主要通過 urls.py 這個(gè)文件將 URL 地址解析到對(duì)應(yīng)的 VIEWS里面
from django.contrib import admin
from django.urls import path
from about import about_views # new
from django.conf.urls import include # new
urlpatterns = [
path('admin/', admin.site.urls),
path('abc/', include('about.urls')), # new
path('xyz/', about_views.index), # new
]
這里使用了兩種方式來解析 URL 地址
- 將
abc路徑地址轉(zhuǎn)發(fā)到about應(yīng)用的urls.py模塊,由about應(yīng)用處理,地址將abc/路徑進(jìn)行拼接
from django.urls import path
from . import views
urlpatterns = [
path('123', views.index),
]
相當(dāng)于解析了
http://127.0.0.1:8000/abc/123
- 將
xyz路徑地址轉(zhuǎn)發(fā)到about應(yīng)用的views.py模塊的index方法,由index處理改請求
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request,'about_me.html')
相當(dāng)于解析了
http://127.0.0.1:8000/xyz
Django 如何處理這個(gè) HTTP 請求
Django 處理 HTTP 請求,主要通過 views.py 這個(gè)文件,上面我們說過 urls.py 模塊將地址轉(zhuǎn)發(fā)到對(duì)應(yīng)的 views.py 模塊的具體方法中處理,然后方法會(huì)返回結(jié)果。
Django 如何生成 HTTP 響應(yīng)
在 views.py 模塊的具體方法中處理地址請求時(shí),會(huì)返回結(jié)果。
二、HTML模版與靜態(tài)資源

模版與資源
- 當(dāng)我們再
render里面返回about_me.html時(shí),頁面可能會(huì)報(bào)TemplateDoesNotExist錯(cuò)誤,這個(gè)時(shí)候需要在setting中TEMPLATES的DIRS里面加上templates的目錄
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR, 'templates')],
},
]
setting中
BASE_DIR的定義,可以獲取項(xiàng)目的絕對(duì)路徑
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.path.abspath(__file__)可以獲得當(dāng)前文件的絕對(duì)路徑
- 當(dāng)html頁面正常打開,但是css文件404時(shí),這個(gè)時(shí)候需要在setting中加上靜態(tài)文件的地址
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
三、項(xiàng)目配置流程

項(xiàng)目配置流程
- 上圖展示了一個(gè)最簡單的項(xiàng)目配置的流程
- 在圖中,上面三步是在創(chuàng)建項(xiàng)目的初期完成的,完成后不需要變動(dòng)
- 中間三步,是后臺(tái)處理的核心,也是我們需要經(jīng)常改動(dòng)的地方
- 最后的Html和css則是前端需要關(guān)注和處理的地方
Django的MTV
- Model(模型):數(shù)據(jù)庫相關(guān)的操作(ORM)
- Template(模版):模板語法--->將變量(數(shù)據(jù)庫數(shù)據(jù))如何巧妙嵌入html頁面中
- View(視圖):邏輯處理
- 另外,Django還有一個(gè)urls分發(fā)器:路徑與視圖函數(shù)的映射關(guān)系