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、開啟瀏覽器進行訪問。