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 01 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
Python目录和文件处理总结详解
Sep 02 Python
Python数据分析模块pandas用法详解
Sep 04 Python
Python Collatz序列实现过程解析
Oct 12 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
Python  word实现读取及导出代码解析
Jul 09 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
Python图像处理之图像拼接
Apr 28 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 安全过滤函数代码
2011/05/07 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
PHP7新特性简述
2017/06/11 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
Python金融数据可视化汇总
2017/11/17 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
python获取Linux发行版名称
2019/08/30 Python
python实现tail -f 功能
2020/01/17 Python
Python如何读取、写入JSON数据
2020/07/28 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
会计自我鉴定范文
2013/10/06 职场文书
成品仓管员岗位职责
2013/12/11 职场文书
毕业生找工作求职信
2014/08/05 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
小学运动会加油稿
2015/07/22 职场文书
Python机器学习之逻辑回归
2021/05/11 Python