url中可以包含一些參數,這些參數可能是被拼湊出來的,也可能是直接手寫進去的。
首先看如何用get的方式,獲取url里的值。
1、get方式,例如網址是/?x=1&y=2這種,這里的x和y都是變量
先看views函數,我們設計了兩個不同類型的取值。一個用來組合字符串,另一個用來計算冪(楊冪的冪)
特別說明:
get里面,第一個參數是django默認把變量進行了類似{'name': name}的包裝,所以都是帶引號的變量;
第二個參數是默認值,當沒有進行賦值時,使用默認值;
如果賦值會直接報錯,默認值無效
# 編寫一個函數,嘗試從url里捕獲值,並顯示到一個返回頁面中 # 想能夠處理任意url會比較麻煩,我們假設處理一種限定格式的url def test_get(request): name = request.GET.get('name', 'guest') gender = request.GET.get('gender', 'unknown') return HttpResponse('%s的性別是:%s' % (name, gender)) # 使用同樣的方式,計算任意次方,a的n次方 def test_power(request): a = request.GET.get('a', 0) n = request.GET.get('n', 0) result = int(a) ** int(n) return HttpResponse('%s的%s次方是%d' % (a, n, result))
2、按格式書寫url
from django.urls import path from . import views urlpatterns = [ path('test_get/', views.test_get, name='test_get'), path('test_power/', views.test_power, name='test_power'), ]
可以看見,在test_urls.py里的設置沒有任何特殊,只需要指向views的對應函數即可,要做的只是在最后加上?x=x&y=y
如果輸入:http://127.0.0.1:8000/test_app/test_get/?name=趙麗穎&gender=女
回車得到頁面,里面顯示為:趙麗穎的性別是:女
如果輸入:http://127.0.0.1:8000/test_app/test_power/?a=12&n=4
回車得到頁面,里面顯示為:12的4次方是20736