1. 程式人生 > >Django2.1入門教程(二)路由傳遞引數

Django2.1入門教程(二)路由傳遞引數

1、先建立專案(django-admin startproject djangourlparams)和app應用(python manage.py startapp app名稱)
2、在urlparams中建立urls.py檔案。
在這裡插入圖片描述
3、在入口urls.py檔案(即和專案settings.py檔案保持一致的)寫入如下
在這裡插入圖片描述

第一種
1、在urlparams下的urls.py檔案中,寫入。
在這裡插入圖片描述

from django.urls import path
from urlparams import views
urlpatterns=[
    path('args/',views.params_first),
]

from urlparams時需先設定專案搜尋根目錄。在專案根目錄上右鍵→mark Directory as→Source root即可。
在這裡插入圖片描述
4、在urlparams下的views檔案中寫入
在這裡插入圖片描述

from django.http import HttpResponse
def params_first(request):
    #針對路由的第一種情況,直接從GET請求中獲取引數。
    user_name=request.GET.get('user','')
    pass_word=request.GET.get('pwd','')
    result='賬號:{},密碼:{}'.format(user_name,pass_word)
    return HttpResponse(result)

5、此時執行(python manage.py runserver)專案。在瀏覽器中輸入127.0.0.1:8000/args/?user=張颯&pwd=123 然後執行,此時瀏覽器就會顯示如下圖所示:
在這裡插入圖片描述

第二種:
1、引數不再以?形式進行拼接,而是以路徑/a/a的形式進行傳遞的。
2、此時在urlparams的urls.py檔案中的urlpatterns中寫入:re_path(r’^params/(\w+)/(\d+)/$’,views.params)
在這裡插入圖片描述

注: /(\d+)/(\w+)/ 就是給檢視函式傳遞的兩個引數。
注:檢視函式如何接收,在函式中必須宣告兩個形參(形參名稱可以任意設定)來接收這兩個引數。

3、在urlparams的views.py檔案中中寫入:
在這裡插入圖片描述

4、此時瀏覽器中執行可以得到:
在這裡插入圖片描述

5、#將re_path轉化為path()的寫法

re_path(r'^params/(\w+)/(\d+)/$',views.params),
#將re_path轉化為path()的寫法:
#檢視函式接收引數,params1必須宣告兩個形參(形參的名稱必須和路由中指定的引數名稱保持一致)。
path('params1/<username>/<password>/',views.params1)

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
備註

# re_path(r'^params/(\w+)/(\d+)/$',views.params),
re_path(r'^params/(\w+)/(\d{2})/$',views.params),   #指定密碼匹配位數限制 
# 將re_path轉化為path()的寫法:
# 檢視函式接收引數,params1必須宣告兩個形參(形參的名稱必須和路由中指定的引數名稱保持一致)。
# <>是用來匹配引數的。
# <>的引數是可以指定轉換器,轉換器的作用就是對攔截到的引數進行轉化,比如型別的轉化,值的轉化等。
# 預設的轉化器是str
# path('params1/<username>/<password>/',views.params1),
path('params1/<username>/<int:password>/',views.params1),  #將接收到的字串型的password轉換為int型。

第三種
1、path()函式除了上述將引數直接以路徑的形式傳遞給檢視引數,也可以採用如下方法傳遞引數。
在urlparams下的urls.py檔案中寫入如下路由:

path('params2/',views.params2,{'user':'李四','pwd':'123'}),

注:params2()需要設定形參,形參的名字和字典的鍵保持一致。

2、然後我們在views.py檔案中實現params2這個函式。

def params2(request,user,pwd):
    result='name====={},pwd====={}'.format(user,pwd)
    return HttpResponse(result)

在這裡插入圖片描述
3、此時開啟瀏覽器進行訪問127.0.0.1:8000/params2/即可看到如下圖所示:

在這裡插入圖片描述

第四種
1、re_path()這種url路由,如何指定引數名稱。而上面的re_path中,引數的名稱可以任意設定。
2、現在我們在urlparams下的urls.py檔案中寫入re_path(r’^params3/(?P\w+)/(?P\d+)/$’, views.params3),

# ?P是指定引數名稱的固定格式
    # <id>、<username>就是形參的名稱,此時檢視函式params3()的形參必須和id,username保持一致。
    # <id>\d+表示將\d+匹配到的數字引數賦值給形參id。
    # <username>\w+表示將\w+匹配到的字元引數,賦值給形參username。
    re_path(r'^params3/(?P<username>\w+)/(?P<id>\d+)/$', views.params3),

3、此時在views.py中實現下
在這裡插入圖片描述

def params3(request,username,id):
    result='name==={},pwd==={}'.format(username,id)
    return HttpResponse(result)

4、開啟瀏覽器進行訪問。
在這裡插入圖片描述