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中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
Python web如何在IIS发布应用过程解析
May 27 Python
python热力图实现简单方法
Jan 29 Python
一劳永逸彻底解决pip install慢的办法
May 24 Python
Python 语言实现六大查找算法
Jun 30 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
php 将excel导入mysql
2009/11/09 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
Python面向对象程序设计示例小结
2019/01/30 Python
python动态进度条的实现代码
2019/07/03 Python
深入了解Django中间件及其方法
2019/07/26 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
python中判断文件结束符的具体方法
2020/08/04 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
班级聚会策划书
2014/01/16 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
优秀团员个人总结
2015/02/26 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis