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访问这个方法。

可以试一下的。 

posted on 2007-09-12 21:35  Game_over  阅读(1988)  评论(3编辑  收藏  举报