Django2.0-urls(2)-引數
阿新 • • 發佈:2018-12-19
urls引數
巢狀引數
-
捕獲某個引數的一部分
-
例如/index/3,需要捕獲3
#urls.py path('app/<index>', v.url_index), #views.py def url_index(request, index): return HttpResponse("返回的引數名是index,它的值是: {}".format(index))
-
執行
預設引數
-
可以給檢視函式的傳遞引數設定一個預設值,這樣
path()
中傳遞的引數就可以不用寫# urls.py urlpatterns = [ path('default/', v.default_param)
#views.py book = [ "頁面1", "頁面2", "頁面3", "頁面4", ] def default_param(request, param=0): return HttpResponse(book[param])
-
執行
傳遞額外引數
-
引數不僅僅來自URL,還可能是自己定義的內容
# urls.py path('app/extra/', v.url_extra, {"extra": "nothing"}),
-
執行
查詢字串
-
在URL中,不需要單獨的匹配查詢字串的部分。只需要在檢視函式中使用
request.GET.get("引數名")
的方式來獲取 。因為查詢字串使用的是GET
請求,所以我們通過request.GET
來獲取引數,並且因為GET
是一個類似於字典的資料型別,獲取值的方式和字典一樣。# urls.py path('app/query/', v.url_query)
-
執行
url的反向編碼
- 防止硬編碼
- 本質上是對每一個url進行命名
- 以後在編碼程式碼中使用中URL的值,原則上都應該使用反向解析
# urls.py
path('app/reverse/', v.url_reverse, name="jack"),
# views.py
from django.urls import reverse #從1.10.*開始從django.urls包匯入
def url_reverse(request):
url_name = reverse("jack")
return HttpResponse("返回的url是: {}".format(url_name))
-
執行
-
此時更改URL
path('app/R/', v.url_reverse, name="jack"),
-
執行
-