必须学会正向路由
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="图书列表")