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 14 Python
使用python实现strcmp函数功能示例
Mar 25 Python
Python 获取新浪微博的最新公共微博实例分享
Jul 03 Python
python中的多线程实例教程
Aug 27 Python
python映射列表实例分析
Jan 26 Python
举例讲解Python中的算数运算符的用法
May 13 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
Python实现的微信红包提醒功能示例
Aug 22 Python
python 统计代码耗时的几种方法分享
Apr 02 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
css配合jquery美化 select
2013/11/29 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
Python Web开发模板引擎优缺点总结
2014/05/06 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
python实现动态数组的示例代码
2019/07/15 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
公司薪酬管理制度
2014/01/31 职场文书
2014年法院工作总结
2014/11/24 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书