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写xml文件的操作实例
Oct 05 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
python利用urllib和urllib2访问http的GET/POST详解
Sep 27 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
python3获取当前目录的实现方法
Jul 29 Python
python实现静态服务器
Sep 05 Python
利用python计算时间差(返回天数)
Sep 07 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
为什么python比较流行
Jun 19 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
Python把图片转化为pdf代码实例
Jul 28 Python
Pycharm如何自动生成头文件注释
Nov 14 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 post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
jquery中$each()方法的使用指南
2015/04/30 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
详解爬虫被封的问题
2019/04/23 Python
python微信撤回监测代码
2019/04/29 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
计算机软件个人的自荐信范文
2013/12/01 职场文书
不错的求职信范文
2014/07/20 职场文书
2014年保育员工作总结
2014/12/02 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
JS ES6异步解决方案
2021/04/29 Javascript