路由系统
1、路由系统基本格式
urlpatterns = [path( 要匹配的路径(可以是正则表达式), 视图函数, 参数, 别名)]
2,参数说明
(1) 正则表达式:一个正则表达式字符串
(2) 视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
(3) •参数:要传递给视图函数的默认参数(字典形式,可选)
(4) •别名:一个可选的name参数
3,正则表达式
(1) 在python中使用 re_path模块来写正则表达式
(2) 正则表达式的开始使用“^”表示。
(3) 正则表达式的结束使用“$”表示。
(4) “r” 元字符串 防止正则表达式中的转义。
语法:
re_path(r'^lianxi2/$',views.lianxi2)
4、正则表达式分组及分组命名匹配
(1) 分组匹配:
正则表达式分组匹配是通过小括号”()”来捕获URL中的值并以位置参数形式传递给视图。
注意:视图函数接受的是内容时字符串类型。
url代码
re_path(r'^lianxi3/(\d+)/$',views.lianxi3)
views代码
def lianxi3(request,num):
print(num)
return render(request,'lianxi3.html')
注意形参num必须要有,输出的num是字符串类型
(2) 分组命名匹配:
分组命名正则表达式组的语法是(?Ppattern),
其中name是组的名称,pattern是要匹配的模式。
捕获的值作为关键字参数而不是位置参数传递给视图函数。
re_path(r'^lianxi3/(?P<year>[0-9]{3})/$',views.lianxi3)
5、Url反向代理(别名)
使用url反向代理,解决硬编码问题。
不使用反向代理:
浏览器访问lianxi5,返回lianxi6页面,点击超链接访问lianxi6页面。
re_path(r'^lianxi5/$',views.lianxi5),
re_path(r'^lianxi6/$',views.lianxi6),
<body>
<h1>联系5</h1>
<a href=" /lianxi6/">跳转到联系6</a>
</body>
使用反向代理:
当lianxi6改名的时候
re_path(r'^lianxi5/$',views.lianxi5),
re_path(r'^lianxi66/$',views.lianxi6,name='lx6'),
将lianxi6固定命名给lx6。
html代码
<body>
<h1>联系5</h1>
<a href=" /lianxi6/">跳转到联系6</a>
<a href="{% url 'lx6' %}">跳到练习6</a>
</body>