Django中URLconf和include()的协同工作方法


Posted in Python onJuly 20, 2015

捕获的参数如何和include()协同工作

一个被包含的URLconf接收任何来自parent URLconfs的被捕获的参数,比如:

# root urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^(?P<username>\w+)/blog/', include('foo.urls.blog')),
)

# foo/urls/blog.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^$', 'foo.views.blog_index'),
 (r'^archive/$', 'foo.views.blog_archive'),
)

在这个例子中,被捕获的 username 变量将传递给被包含的 URLconf,进而传递给那个URLconf中的 每一个 视图函数。

注意,这个被捕获的参数 总是 传递到被包含的URLconf中的 每一 行,不管那些行对应的视图是否需要这些参数。 因此,这个技术只有在你确实需要那个被传递的参数的时候才显得有用。
额外的URLconf如何和include()协同工作

相似的,你可以传递额外的URLconf选项到 include() , 就像你可以通过字典传递额外的URLconf选项到普通的视图。 当你这样做的时候,被包含URLconf的 每一 行都会收到那些额外的参数。

比如,下面的两个URLconf在功能上是相等的。

第一个:

# urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^blog/', include('inner'), {'blogid': 3}),
)

# inner.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^archive/$', 'mysite.views.archive'),
 (r'^about/$', 'mysite.views.about'),
 (r'^rss/$', 'mysite.views.rss'),
)

第二个

# urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^blog/', include('inner')),
)

# inner.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^archive/$', 'mysite.views.archive', {'blogid': 3}),
 (r'^about/$', 'mysite.views.about', {'blogid': 3}),
 (r'^rss/$', 'mysite.views.rss', {'blogid': 3}),
)

这个例子和前面关于被捕获的参数一样(在上一节就解释过这一点),额外的选项将 总是 被传递到被包含的URLconf中的 每一 行,不管那一行对应的视图是否确实作为有效参数接收这些选项,因此,这个技术只有在你确实需要那个被传递的额外参数的时候才显得有用。 因为这个原因,这种技术仅当你确信在涉及到的接受到额外你给出的选项的每个URLconf时有用的才奏效。

Python 相关文章推荐
python正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
python中的闭包用法实例详解
May 05 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
Python解析json文件相关知识学习
Mar 01 Python
django_orm查询性能优化方法
Aug 20 Python
python实现代码统计器
Sep 19 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
pycharm工具连接mysql数据库失败问题
Apr 01 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
Python自动化之批量处理工作簿和工作表
Jun 03 Python
python微信智能AI机器人实现多种支付方式
Apr 12 Python
在Python的Django框架中包装视图函数
Jul 20 #Python
Django中URL视图函数的一些高级概念介绍
Jul 20 #Python
Python的Django框架中从url中捕捉文本的方法
Jul 20 #Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 #Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 #Python
python通过socket查询whois的方法
Jul 18 #Python
Python字符串匹配算法KMP实例
Jul 18 #Python
You might like
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
jQuery复合事件用法示例
2017/06/10 jQuery
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Python自定义线程类简单示例
2018/03/23 Python
python实现字符串和字典的转换
2018/09/29 Python
详解python中list的使用
2019/03/15 Python
python语言元素知识点详解
2019/05/15 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
美国牛仔品牌:True Religion
2018/11/16 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
KTV的创业计划书范文
2014/02/02 职场文书
采购部经理岗位职责
2014/02/10 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
个人先进材料范文
2014/12/30 职场文书
公司表扬信格式
2015/05/04 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
学生安全责任协议书
2016/03/22 职场文书
MySQL插入数据与查询数据
2022/03/25 MySQL
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB