Python Web编程(三)
下面学习Django里面的URL匹配原则。
URL的匹配是设置在urls.py里面的。
上一节里面的urls.py是这样配置的:
urlpatterns = patterns('',
(r'^test1/', 'test1.helloworld.index'),
)
它的意思就是如果URL为test1,它就会去寻找test1.helloworld.index这个方法。
上一节只是显示出来了HelloWorld。
如果是动态的网页呢?例如有参数的?
Django的的URL模式是正则表达式。
例如要显示时间,有这么一个方法(test.py):
from django.http import HttpResponse
import datetime
def hour_offset(request, plus_or_minus, offset):
offset = int(offset)
if offset == 1:
hours = 'hour'
else:
hours = 'hours'
if plus_or_minus == 'plus':
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
output = 'In %s %s, it will be %s.' % (offset, hours, dt)
else:
dt = datetime.datetime.now() - datetime.timedelta(hours=offset)
output = '%s %s ago, it was %s.' % (offset, hours, dt)
output = '%s' % output
return HttpResponse(output)
你如果想完全的用URL匹配这个方法,就需要加上两个参数--加减指示和偏移量。
如下的配置可以做到:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
# (r'^test1/', 'test1.helloworld.index'),
(r'^now/(plus|minus)(1)hour/$', 'test1.test.hour_offset'),
(r'^now/(plus|minus)([2-9]|\d\d)hours/$', 'test1.test.hour_offset'),
)
以上的设置允许类似plus2hours,minus1hour之类的URL访问这个方法。
可以试一下的。