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列表与元组详解实例
Nov 01 Python
Python lxml模块安装教程
Jun 02 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
深入浅析python 中的匿名函数
May 21 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
Python切割图片成九宫格的示例代码
Mar 10 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
python安装及变量名介绍详解
Dec 12 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 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中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
js获取视频时长代码
2014/04/10 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
layui表格实现代码
2017/05/20 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python二分查找详解
2015/09/13 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
程序员机试试题汇总
2012/03/07 面试题
函授大学生自我鉴定
2014/02/05 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
Golang实现可重入锁的示例代码
2022/05/25 Golang
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python