高质量的url
还记得带参数的url吗?java和php构建的web程序中,经常可以见到这种? &漫天飞的url:
比如想要3个小时以后的时间,可能就会这样:/now/plus?hours=3
混乱而且土
django利用python强大的正则表达式避免了这个问题,
同一个问题,django可以这样传参:
/now/plus3hours/
更加简洁优雅
因为数字是变化的,url匹配自然需要更改:(r'^now/plus\d{1,2}hours/$', hours_ahead),
表示匹配1位或2位数值,3位以上的数值这里就界定为非法数据,不再匹配,否则用户输入一个/now/plus99999999999999999999hours/怎么办?
写好url匹配,需要写对应的处理:hours_ahead
hours_ahead如何才能从url取得参数呢?
通过django调用函数的时候,首先传入一个必要参数HttpResponse对象.这是必有的
而后对于动态匹配url的,会传入一个string,这个string就是动态匹配的内容,如果是上面的url,那自然就是传入’3′
如果url匹配多个值?如何传入?这个稍后说.def hours_ahead(request, offset):
offset = int(offset)
dt = datetime.datetime.now() datetime.timedelta(hours=offset)
html = "In %s hour(s), it will be %s." % (offset, dt)
return HttpResponse(html)
把string转为int,然后想干嘛就干嘛,这里就不废话了..
打开http://127.0.0.1:8000/now/plus3hours/看看是否正确的干活了