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