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 greenlet实现原理和使用示例
Sep 24 Python
Python实现抓取城市的PM2.5浓度和排名
Mar 19 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
Python中的TCP socket写法示例
May 11 Python
python计算两个地址之间的距离方法
Jun 09 Python
Python 监测文件是否更新的方法
Jun 10 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
python实现简易淘宝购物
Nov 22 Python
django创建css文件夹的具体方法
Jul 31 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
Python装饰器详细介绍
Mar 25 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
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
初识Node.js
2014/09/03 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
使用python在本地电脑上快速处理数据
2017/06/22 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Python extract及contains方法代码实例
2020/09/11 Python
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
总监职责范文
2013/11/09 职场文书
八一建军节活动方案
2014/02/10 职场文书
个人贷款担保书
2014/04/01 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
教你用python实现12306余票查询
2021/06/30 Python