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遍历文件夹和读写文件的实现代码
Aug 28 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
python中is与双等于号“==”的区别示例详解
Nov 21 Python
python3大文件解压和基本操作
Dec 15 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
python爬虫之快速对js内容进行破解
Jul 09 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
Python3 io文本及原始流I/O工具用法详解
Mar 23 Python
Python实现AI换脸功能
Apr 10 Python
Python json格式化打印实现过程解析
Jul 21 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连接SQLServer2005方法及代码
2013/12/26 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
php单例模式的简单实现方法
2016/06/10 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
三种Webpack打包方式(小结)
2018/09/19 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
Python pickle模块用法实例分析
2015/05/27 Python
Python用模块pytz来转换时区
2016/08/19 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python编写登陆接口的方法
2017/07/10 Python
python迭代dict的key和value的方法
2018/07/06 Python
在django模板中实现超链接配置
2019/08/21 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
最新pycharm安装教程
2020/11/18 Python
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
综合办公室主任岗位职责
2014/04/13 职场文书
财务负责人任命书
2014/06/06 职场文书
我的中国梦口号
2014/06/16 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
签字仪式主持词
2015/07/03 职场文书
放假通知怎么写
2015/08/18 职场文书