- 通過之前後臺管理頁面,當我們在瀏覽器中輸入 http://127.0.0.1:8000/admin/ 之後,瀏覽器顯示出了後臺管理的登錄頁面,服務器是怎麼給我們找到這個頁面並返回呢?
- /admin/是我們想要請求的頁面,服務器在收到這個請求之後,就一定對應着一個處理動作,這個處理動作幫我們產生頁面內容並返回回來,這個過程是由視圖來完成。
- 在django的MVT設計框架中,用戶在URL中請求的是視圖,視圖接收請求後進行處理,並將處理的結果返回給請求者。
視圖操作步驟:
- 定義視圖處理函數
- 配置URL路由
定義視圖處理函數
視圖對應一個Python函數,被定義在views.py
中。
視圖的必須有一個參數,一般叫request
,視圖必須返回HttpResponse
對象,HttpResponse
中的參數內容會顯示在瀏覽器的頁面上。
打開app的views.py
文件,定義視圖處理函數index
:
from django.http import HttpResponse
def index(request):
return HttpResponse('<h1>index</h1>')
配置URL路由
打開項目的urls.py
文件,爲index視圖增加URL路由:
一條URL路由包括:
url規則
和視圖處理函數
兩部分:
url規則
通常使用正則表達式定義。視圖處理函數
在views.py中定義。
from django.conf.urls import url
from django.contrib import admin
from django.urls import path
from app import views
urlpatterns = [
path('admin/', admin.site.urls),
url('index', views.index), # index對應的URL路由
]
啓動Django服務,查看運行效果
查找視圖的過程
請求者在瀏覽器地址欄中輸入url,請求到網站後,獲取url信息,然後與編寫好的URL逐條匹配,如果匹配成功則調用對應的視圖函數,如果所有的URL都沒有匹配成功,則返回404錯誤。
工程實踐
通常將一個app中的URL路由都放在一個文件中,並在項目的
urls.py
中包含該路由文件
- 在app中新建
urls.py
文件,編碼如下:
from django.conf.urls import url
from app import views
urlpatterns = [
url('index', views.index),
]
- 將app的
urls.py
加到項目的urls.py
中
from django.conf.urls import url
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
url('app', include('app.urls')),
]
啓動Django服務,查看運行效果
注意:增加了一層路由,url的輸入也要隨之變化
http://127.0.0.1:8000/app/index