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 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
详解Python中的正则表达式
Jul 08 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
Python装饰器简单用法实例小结
Dec 03 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
Python正则表达式如何匹配中文
May 27 Python
python能否java成为主流语言吗
Jun 22 Python
python3.9之你应该知道的新特性详解
Apr 29 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
微信access_token的获取开发示例
2015/04/16 PHP
eclipse php wamp配置教程
2016/06/30 PHP
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
详解重置Django migration的常见方式
2019/02/15 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
荷兰本土平价百货:HEMA
2017/10/23 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
ktv收银员岗位职责
2013/12/16 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
社区服务理念口号
2015/12/25 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis
分享几种python 变量合并方法
2022/03/20 Python
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript