W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
現(xiàn)在讓我們向 ?polls/views.py
? 里添加更多視圖。這些視圖有一些不同,因?yàn)樗麄兘邮諈?shù):
def detail(request, question_id):
return HttpResponse("You're looking at question %s." % question_id)
def results(request, question_id):
response = "You're looking at the results of question %s."
return HttpResponse(response % question_id)
def vote(request, question_id):
return HttpResponse("You're voting on question %s." % question_id)
把這些新視圖添加進(jìn) ?polls.urls
? 模塊里,只要添加幾個(gè) ?url()
? 函數(shù)調(diào)用就行:
from django.urls import path
from . import views
urlpatterns = [
# ex: /polls/
path('', views.index, name='index'),
# ex: /polls/5/
path('<int:question_id>/', views.detail, name='detail'),
# ex: /polls/5/results/
path('<int:question_id>/results/', views.results, name='results'),
# ex: /polls/5/vote/
path('<int:question_id>/vote/', views.vote, name='vote'),
]
然后看看你的瀏覽器,如果你轉(zhuǎn)到 "/polls/5/" ,Django 將會(huì)運(yùn)行 ?detail()
? 方法并且展示你在 URL 里提供的問題 ID。再試試 "/polls/5/results/" 和 "/polls/5/vote/" ——你將會(huì)看到暫時(shí)用于占位的結(jié)果和投票頁。
當(dāng)某人請(qǐng)求你網(wǎng)站的某一頁面時(shí)——比如說, "/polls/5/" ,Django 將會(huì)載入 ?mysite.urls
? 模塊,因?yàn)檫@在配置項(xiàng) ?ROOT_URLCONF
中設(shè)置了。然后 Django 尋找名為 ?urlpatterns
變量并且按序匹配正則表達(dá)式。在找到匹配項(xiàng) ?'polls/'
?,它切掉了匹配的文本(?"polls/"
?),將剩余文本——?"5/"
?,發(fā)送至 'polls.urls' URLconf 做進(jìn)一步處理。在這里剩余文本匹配了 ?'<int:question_id>/'
?,使得我們 Django 以如下形式調(diào)用 ?detail()
?:
detail(request=<HttpRequest object>, question_id=34)
問題 ?question_id=34
? 來自 ?<int:question_id>
?。使用尖括號(hào) "獲得" 網(wǎng)址部分后發(fā)送給視圖函數(shù)作為一個(gè)關(guān)鍵字參數(shù)。字符串的 ?question_id
? 部分定義了要使用的名字,用來識(shí)別相匹配的模式,而 ?int
部分是一種轉(zhuǎn)換形式,用來確定應(yīng)該匹配網(wǎng)址路徑的什么模式。冒號(hào) (:) 用來分隔轉(zhuǎn)換形式和模式名。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: