Django从理论到实战(part16)--指定默认的参数
學習筆記,僅供參考
參考自:Django打造大型企業官網;
本系列Blog以應用為主,理論基礎部分我在后端專欄的Django系列博客已經寫過了,如果有些需要補充的知識點,我會在這個系列中,盡量詳細的寫一下。
指定默認的參數
- 看一個示例
我們打開安徽財經大學的第一頁吧,其url為:
https://tieba.baidu.com/f?kw=%B0%B2%BB%D5%B2%C6%BE%AD%B4%F3%D1%A7可以看到,這個url中只有關于吧名的查詢參數kw。
我們再翻到第2頁,其URL為:
https://tieba.baidu.com/f?kw=%E5%AE%89%E5%BE%BD%E8%B4%A2%E7%BB%8F%E5%A4%A7%E5%AD%A6&pn=50可以看到,第2頁的url中多了一個查詢參數pn,它的參數值為50。
我們再翻到第3頁,其URL為:
https://tieba.baidu.com/f?kw=%E5%AE%89%E5%BE%BD%E8%B4%A2%E7%BB%8F%E5%A4%A7%E5%AD%A6&pn=100好的,現在我們可以推斷的pn參數可以控制頁數,且第kkk頁pn=(k?1)?50pn=(k?1)?50pn=(k?1)?50。
我們在瀏覽器中輸入URL:
https://tieba.baidu.com/f?kw=%E5%AE%89%E5%BE%BD%E8%B4%A2%E7%BB%8F%E5%A4%A7%E5%AD%A6&pn=0發現果然跳轉到了第1頁。
我們發現,不輸入查詢參數pn與輸入pn=0返回的都是第1頁,這是怎么做到的呢?
我們可以通過設置默認參數實現。
- 設置默認參數原理
在urls.py模塊中,使用path或re_path函數時,在route參數中都可以包含參數,而有時候想指定默認的參數,這時候可以通過以下方式來完成。示例代碼如下:
from django.urls import pathfrom . import viewsurlpatterns = [path('blog/', views.page),path('blog/page<int:num>/', views.page), ]# View (in blog/views.py) def page(request, num=1):# Output the appropriate page of blog entries, according to num....當在訪問blog/的時候,因為沒有傳遞num參數,所以會匹配到第一個url,這時候就執行view.page這個視圖函數,而在page函數中,又有num=1這個默認參數。因此這時候就可以不用傳遞參數。而如果訪問blog/1的時候,因為在傳遞參數的時候傳遞了num,因此會匹配到第二個url,這時候也會執行views.page,然后把傳遞進來的參數傳給page函數中的num。
- 舉個例子
我們在主urls.py模塊下創建一個路由:
urlpatterns = [path('admin/', admin.site.urls),path('', views.page),path('page/<int:page_num>/', views.page), ]在主views.py模塊下定義一個視圖函數:
def page(request, page_num = 1):page_list = ["page1", "page2", "page3"]num = page_num-1return HttpResponse(page_list[num])我們向http://127.0.0.1:8000/page/1/發起請求:
再向http://127.0.0.1:8000/發起請求,可以看到依然顯示的是第一頁:
總結
以上是生活随笔為你收集整理的Django从理论到实战(part16)--指定默认的参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女子夜里打出租 全程直播监控!司机:不自
- 下一篇: 号称“200 万内最好的跑车”,哪吒 G