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实现的简单万年历例子分享
Apr 25 Python
Python迭代和迭代器详解
Nov 10 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
详解重置Django migration的常见方式
Feb 15 Python
selenium处理元素定位点击无效问题
Jun 12 Python
python编写微信公众号首图思路详解
Dec 13 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Python更换pip源方法过程解析
May 19 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 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的FTP学习(一)
2006/10/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
php封装的page分页类完整实例
2016/10/18 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
Python中使用中文的方法
2011/02/19 Python
python动态性强类型用法实例
2015/05/09 Python
python+mysql实现教务管理系统
2019/02/20 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
python怎么对数字进行过滤
2020/07/05 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
Python 求向量的余弦值操作
2021/03/04 Python
StringBuilder和String的区别
2015/05/18 面试题
力学专业毕业生自荐信
2013/11/17 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
门卫岗位职责
2015/02/09 职场文书
经销商会议开幕词
2016/03/04 职场文书
如何解决php-fpm启动不了问题
2021/11/17 PHP
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技