Django中url匹配规则的补充

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)传递给对应的函数,该函数必须设置一个形参来接收该值。该用法可用在当用户登陆主站后,访问子站时,将用户信息传递给子站,用户无须再登陆。该值一般都是动态值传递。

原文地址:https://www.cnblogs.com/ahaii/p/5710458.html