lbdbzj110 发表于 2015-4-27 08:54:07

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)(|\d\d)hours/$', 'test1.test.hour_offset'),
)
以上的设置允许类似plus2hours,minus1hour之类的URL访问这个方法。
可以试一下的。
页: [1]
查看完整版本: Python Web编程(三)