Django 3.2.5博客开发教程:URL与视图函数
在講URL與視圖函數之前我們先給大家簡單介紹一下用戶訪問網站的流程。我們訪問一個網站的時候,一般先打開瀏覽器,然后在瀏覽器的地址欄里輸入一個網址,也就是URL,然后回車,我們就可以在瀏覽器里看到這個網址返回的內容。這是我們能看得見的過程,還有一些我們看不見的過程,那就是:當我們在瀏覽器里輸入網址(URL)時,回車,然后瀏覽器就會向目標網址發送一個HTTP請求,服務器收到請求之后就會給這個請求做出一個響應,這個響應就是把對應的內容通過瀏覽器渲染出來,呈現給我們看。這個過程就是請求與響應。
下圖,就是請求響應的過程。
更多相關的內容,大家可以查看文章:請求與響應
上面我們提到了URL,這個URL在我們的Django中,其實是由我們自己構造的。(這個說法不太嚴謹,但為了方便大家理解之后的內容,先當這說辭是正確的。)
Django中,我們約定URL是在項目同名目錄下的urls.py文件里urlpatterns列表構造的。
myblog/myblog/urls.py
表現形式如下:
urlpatterns = [path(正則表達式, views視圖函數,參數,別名), ] 括號里的參數說明: 1、一個正則表達式字符串 2、一個可調用對象,通常為一個視圖函數或一個指定視圖函數路徑的字符串 3、可選的要傳遞給視圖函數的默認參數(字典形式) 4、一個可選的name參數(別名)比如我想構造三個URL,網站首頁(http://www.django.cn/)、新聞(http://www.django.cn/news/)、論壇(http://www.django.cn/bbs/),我們可以這么做。
urlpatterns = [path('', views.index), #里面留空,代表首頁path('news/',views.news),#newspath('bbs/',views.bbs),#bbs ]URL就是這么構造的,我們的域名www.django.cn不需要寫,完整的URL應該要這么寫:path(正則表達式, views視圖函數,參數,別名), 里面的正則表達式, views視圖函數,是必須要寫的,而參數,別名是可選的。我們在有特殊需要的時候才寫。關于URL詳細介紹和使用方法可以查看文章:路由配置系統URLconf
通過上面我們可以看到,每個URL都對應一個views視圖函數名,視圖函數名不能相同,否則會報錯。視圖函數,Django中約定寫在APP應用里的views.py文件里。然后在urls.py文件里通過下面的方式導入:
from APP應用名 import views from APP應用名.vews import 函數名或類名視圖函數是一個簡單的Python 函數,它接受Web請求并且返回Web響應。響應可以是一張網頁的HTML內容,一個重定向,一個404錯誤,一個XML文檔,或者一張圖片. . . 是任何東西都可以。無論視圖本身包含什么邏輯,都要返回響應。這個視圖函數代碼一般約定是放置在項目或應用程序目錄中的名為views.py的文件中。
http請求中產生兩個核心對象:
1、http請求---->HttpRequest對象,用戶請求相關的所有信息(對象)
2、http響應---->HttpResponse對象,響應字符串
之前我們在歡迎頁面這章的時候有操作過一次。我們回顧一下:
首先,打開打開bolg目錄下的views.py文件,寫一個hello視圖函數,在里面輸入:
from django.http import HttpResponsedef hello(request):"""寫一個hello函數,通過request接收URL或者說是http請求信息,然后給這個請求返回一個HttpResponse對象"""return HttpResponse('歡迎使用Django!')例子里,我們用到的request,就是HttpRequest對象。HttpResponse(“歡迎使用Django!”),就是HttpRequest對象,它向http請求響應了一段字符串對象。
我們打開myblog目錄下的urls.py文件中先導入視圖函數,然后構造一個URL,代碼如下:
from blog import views #導入視圖函數 urlpatterns = [...path('', views.hello), #這個是我們構造的URL ]代碼寫完之后,啟動項目就可以在瀏覽器里看到視圖函數返回的字符串"歡迎使用Django!"
每一個URL都會對應一個視圖函數,當一個用戶請求訪問Django站點的一個頁面時,然后就由Django路由系統(URL配置文件)去決定要執行哪個視圖函數使用的算法。
通過URL對應關系匹配 ->找到對應的函數(或者類)->返回字符串(或者讀取Html之后返回渲染的字符串)這個過程也就是我們Django請求的生命周期。
視圖函數,就是圍繞著HttpRequest和HttpResponse這兩個對象進行的。了解更多相關知識,可查看入門教程里的:視圖函數
參考鏈接:Django博客開發教程:URL與視圖函數
總結
以上是生活随笔為你收集整理的Django 3.2.5博客开发教程:URL与视图函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django 3.2.5博客开发教程:使
- 下一篇: Django 3.2.5博客开发教程:用