1. 程式人生 > >Django2.0-urls(2)-引數

Django2.0-urls(2)-引數

urls引數

巢狀引數

  • 捕獲某個引數的一部分

  • 例如/index/3,需要捕獲3

    #urls.py
    path('app/<index>', v.url_index),
    
    #views.py
    def url_index(request, index):
        return HttpResponse("返回的引數名是index,它的值是: {}".format(index))
    
  • 執行

    run1

預設引數

  • 可以給檢視函式的傳遞引數設定一個預設值,這樣path()中傳遞的引數就可以不用寫

    # urls.py
    urlpatterns = [
    path('default/', v.default_param)
    , path('default/<int:param>', v.default_param), ]
    #views.py
    book = [
        "頁面1",
        "頁面2",
        "頁面3",
        "頁面4",
    ]
    
    
    def default_param(request, param=0):
        return HttpResponse(book[param])
    
  • 執行

    default1

    default2

傳遞額外引數

  • 引數不僅僅來自URL,還可能是自己定義的內容

    # urls.py
    path('app/extra/', v.url_extra, {"extra": "nothing"}),
    #views.py def url_extra(request, extra): return HttpResponse("返回的額外引數名是extra, 它的值是: {}".format(extra))
  • 執行

    run

查詢字串

  • 在URL中,不需要單獨的匹配查詢字串的部分。只需要在檢視函式中使用request.GET.get("引數名")的方式來獲取 。因為查詢字串使用的是GET請求,所以我們通過request.GET來獲取引數,並且因為GET是一個類似於字典的資料型別,獲取值的方式和字典一樣。

    # urls.py
    path('app/query/', v.url_query)
    , #views.py def url_query(request): variable = request.GET.get("id") # 獲得鍵id所對應的值 return HttpResponse("返回的查詢字串是: {}".format(variable))
  • 執行 run

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))
  • 執行

    run

  • 此時更改URL

    path('app/R/', v.url_reverse, name="jack"),
    
    • 執行

      run2