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实现忽略大小写对字符串列表排序的方法
Sep 25 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
详解Python3注释知识点
Feb 19 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
django 配置阿里云OSS存储media文件的例子
Aug 20 Python
在python中做正态性检验示例
Dec 09 Python
Python能做什么
Jun 02 Python
python中数字是否为可变类型
Jul 08 Python
python异步的ASGI与Fast Api实现
Jul 16 Python
Python之matplotlib绘制饼图
Apr 13 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
一个域名查询的程序
2006/10/09 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
JavaScript学习历程和心得小结
2010/08/16 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
浅谈Angular单元测试总结
2019/03/22 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
Python类class参数self原理解析
2020/11/19 Python
python3实现简单飞机大战
2020/11/29 Python
德国高性价比网上药店:medpex
2017/07/09 全球购物
int和Integer有什么区别
2013/05/25 面试题
前台接待岗位职责
2013/12/03 职场文书
仓库管理制度
2014/01/21 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
公司委托书怎么写
2014/08/02 职场文书
html粘性页脚的具体使用
2022/01/18 HTML / CSS