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 strip()函数 介绍
May 24 Python
Python和php通信乱码问题解决方法
Apr 15 Python
python实现定时播放mp3
Mar 29 Python
python使用htmllib分析网页内容的方法
May 08 Python
Python利用IPython提高开发效率
Aug 10 Python
简单谈谈Python流程控制语句
Dec 04 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
python实现双链表
May 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提示undefined index的几种解决方法
2012/05/21 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
Django自定义manage命令实例代码
2018/02/11 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python的range和linspace使用详解
2019/11/27 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
农村门前三包责任书
2014/07/25 职场文书
老龄工作先进事迹
2014/08/15 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python