Django中url匹配规则是在urls.py文件中配置的。
1、关于正则匹配优先级
在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条。
在url匹配列表中,如果第一条为正则模糊匹配,第二条为精确匹配,则优先匹配第一条。如下:
url(r'^2016/([0-9]{2})/$',views.001),
url(r'^2016/07/$',views.002),
当请求url为localhost:8000/2016/07/时,也会转发给views.001处理。
将匹配到的数字传给视图中函数时,永远是以字符串的形势传递的。
2、关于二级路由子url配置
请求经过全局url转发到二级url(子url)时,若子url没有任何值,使用'^$'代替(匹配首页)。如下:
全局url的配置
url(r'^payment/',include('test1.urls')),
请求url为localhost:8000/payment时,交给test1下面的urls。
test1中url的配置
url(r'^&',views.db_handle),
即请求的url为localhost:8000/payment时,交给db_handle函数处理。
3、传递额外参数
全局url指定子url时,可以传递一个参数。并且该参数在子url指定的函数中必须接收。如下:
全局url配置
url(r'^test1/',include('test1.urls'),{'name':'ahai'}),
参数{'name':'ahaii'}会随着子url(test1.urls)传递给对应的函数,该函数必须设置一个形参来接收该值。该用法可用在当用户登陆主站后,访问子站时,将用户信息传递给子站,用户无须再登陆。该值一般都是动态值传递。