必須學會正向路由
1. 路由
? 將url與視圖進行綁定. (路由用于維護url與視圖之間 關系.)
? 通過正則匹配的形式對url進行匹配, 調用相應的視圖?
2. 回顧常用的正則表達式
^ : 以...開始
$ : 以...結束
單字符簇:
.? 任意字符
\d 任意數字
[A-Z] 任意大寫字母
[a-z] 任意小寫字母
[A-Za-z] 任意字母不區分大小寫
匹配數量
*? 任意多個
+? 一到多個
{1,9} 1到9個
{9} 9個
? 0或者1個
[^/]+ 一到多個, 直到遇到斜線
3. 現在通常網址傳參數的方式有兩種
1. 直接通過url后面加?的形式傳遞參數
2. (利于seo)? 將參數與url融合到一塊
例如:
https://item.jd.com/100001550349.html
https://www.douban.com/note/702775743/
3. 如何從url中獲取信息
a. 假設 現在訪問 圖書中謀本數的詳情
http://127.0.0.1:8009/book/9999.html
就訪問id為9999的圖書的信息
b. url綁定的時候寫法
urlpatterns = [
url(r'^index/$',index,name="圖書首頁"),
url(r'^\d+\.html$',detail,name="圖書詳情"),
]
c. 如何獲取 url中的信息
使用 小括號 () 將需要獲取的信息 括起來, 將獲取到信息自動傳遞給 視圖函數 的第二位置參數開始.
urlpatterns = [
url(r'^index/$',index,name="圖書首頁"),
url(r'^(\d+)\.html$',detail,name="圖書詳情"),
]
d. 也可以在url信息中傳遞多個參數
使用多個小括號
http://127.0.0.1:8009/book/list/yanqing/1/? ? 訪問言情小說, 排序為降序?
urlpatterns = [
url(r'^index/$',index,name="圖書首頁"),
url(r'^(\d+)\.html$',detail,name="圖書詳情"),
url(r'^list/([a-z]+)/(\d)/$',list_book,name="圖書列表"),
]
e. 以上都是以位置參數的形式傳遞給視圖函數
? ? 還可以 以關鍵字參數的形式傳遞給視圖函數
格式 (?P<參數名>正則表達式)
例如:
# 以關鍵字形式傳遞參數
url(r'^list/(?P<type>[a-z]+)/(?P<order>\d)/$',list_book,name="圖書列表")