Django url 管理之 命名组

命名组可以使用命名的正则表达式组来捕获 URL 中的值并以关键字参数的方式传递给视图函数。

在 Python 正则表达式中,命名正则表达式组的语法是 (?Ppattern),其中 name 是组的名称,pattern 是要匹配的模式。

例子, urls.py 如下:

urlpatterns = [
    …………

    # 捕获一个 test/ 后面接上4个数字的 url
    # 并把这4个数字作为 test 视图函数的关键字参数 year
    url(r'^test/(?P[0-9]{4})/$', test),
    ]

视图函数,views.py 如下:

from django.http.response import HttpResponse

# 上面 url 的最后四个数字作为关键字参数 year 被传入到视图函数 test 中
def test(request, year):
    return HttpResponse('年份:' + year) 

打开:http://127.0.0.1:8000/test/2016/ ,就能看到 url 上的值 2016。

我们也可以有多个命名组,比如同时在 url 中传递年份和月份参数:

url(r'^test/(?P[0-9]{4})/(?P[0-9]{2})/$', test),




指定视图参数的默认值

编写 url.py:

urlpatterns = [
    …………

    url(r'^test/$', test),
    url(r'^test/(?P[0-9]{4})/$', test),
    ]

编写视图函数 views.py:

def test(request, year='2000'):
    return HttpResponse('年份:' + str(year)) 

当访问:http://127.0.0.1:8000/test/ 时候,year 的值将会是默认值 '2000'。

你可能感兴趣的:(Django url 管理之 命名组)