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中optionParser模块的使用方法实例教程
Aug 29 Python
详解python3百度指数抓取实例
Dec 12 Python
python的exec、eval使用分析
Dec 11 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
python实现求特征选择的信息增益
Dec 18 Python
Python创建字典的八种方式
Feb 27 Python
Django model update的多种用法介绍
Mar 28 Python
python要安装在哪个盘
Jun 15 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
Python字典dict常用方法函数实例
Nov 09 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
Python如何使用神经网络进行简单文本分类
Feb 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数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python 提取文件的小程序
2009/07/29 Python
python解析xml文件实例分享
2013/12/04 Python
Python入门篇之文件
2014/10/20 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
毕业生个人求职自荐信
2014/02/26 职场文书
预备党员承诺书
2014/03/25 职场文书
新年寄语大全
2014/04/12 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
地理科学专业自荐信
2014/09/01 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
python基础之文件操作
2021/10/24 Python