Django学习笔记(第三节) 动态URL
来源:互联网 发布:sql修改数据库名字 编辑:程序博客网 时间:2024/05/16 09:20
当我们在编写URLConf时,经常会出现多个URL只有某一部分有很小的差别,例如:
urlpatterns = patterns('',
url(r'^time/plus/1', 'zSite.views.one_hour_ahead', name='one_hour_ahead'),
url(r'^time/plus/2', 'zSite.views.two_hour_ahead'', name='two_hour_ahead'),
url(r'^time/plus/3', 'zSite.views.three_hour_ahead', name='three_hour_ahead'),
)
在这里后面四个url只有中间的数字是有区别的。分开处理会有很多冗余的视图函数,而整个应用也被限制了只支持预定义的四个时间,如果我们需要发布5小时,就需要单独创建新视图函数和配置URL。
为了避免这些问题,django引入动态URL。
动态URL的本质就是正则表达式匹配多条记录,根据匹配的URL的微小不同,在视图函数中进行处理。
将上面的例子进行改写、合并为:
urlpatterns = patterns('',
url(r'^time/plus/\d+', 'zSite.views.hour_ahead', name='hour_ahead'),
)
\d+表示匹配1次或多次任意数字,也就是匹配任意整数的意思
当我们需要对其进行控制,比方说我们希望最大不超过99,只需要对这部分进行修改,如下:
(r'^time/plus/(\d{1,2})/$', 'zSite.views.hour_ahead', name='hour_ahead'),
将\d{1,2}用括号包裹起来那么这个正则表达式将匹配到全部字符串,但是只返回括号中的值。这个值将成为视图函数中的参数。
在views.py中添加函数:
#request是一个HttpRequest对象,set是从正则中匹配的结果。def hours_ahead(request,oset): try: #字符转化为数字 oset = int(oset); except ValueError: #当类型转换失败时,进入404页面 raise Http404() #timedelta()方法是两个时间之间的时间差,详见Document dt = datetime.datetime.now() + datetime.timedelta(hours = oset) html = "<html><body>In %s hour(s), it will be %s.</body></html>" %(oset , dt) return HttpResponse(html)
启动服务,输入地址验证结果。Http404是需要导入的:from django.http import Http404 。
页面将显示oset小时后的时间,如果输入的不是数字或者大于99都将进入404。
在这个页面中将显示一些敏感信息,但是这仅仅是django 的debug模式才显示的。关闭debug模式就不用担心在出现这些信息了。
在开发的过程中,这些信息可以用来帮助调试程序,代替使用print调试。
- Django学习笔记(第三节) 动态URL
- css学习笔记(第三节)
- epage 学习笔记第三节
- java笔记第三节
- 课堂笔记-第三节
- Itween笔记(第三节)
- php学习 第三节
- 机器学习第三节
- OC学习 第三节
- vue学习第三节
- Redis学习第三节
- php学习笔记:第三节--php中的字符串
- 课堂笔记学习java(初级)第三节课
- 汇编语言学习笔记 第三节:算术运算指令
- Django学习笔记_01(视图及URL)
- Django学习笔记(2):Django视图和URL
- Django学习笔记(2):Django视图和URL
- django动态url
- phoneGap环境搭建教程
- 杭州2015上学政策
- IDEA 提交工程到 BitBucket
- 有关键盘事件
- POJ 1654 || Area(求多边形面积
- Django学习笔记(第三节) 动态URL
- 关于新建vs项目引入cocos项目的警告
- 2015-5-5分享的pdf
- Indent Guides for Visual Studio 代码格式化收缩插件
- Android访问网络,使用HttpURLConnection还是HttpClient?
- 阻止浏览器默认行为
- JSONModel使用
- Objective-C常见语法——入门者,看懂别人的代码基础
- 遗传算法优化的BP神经网络建模