Django之URL的命名空间和命名模式
来源:互联网 发布:java延时执行 编辑:程序博客网 时间:2024/06/05 06:49
在Django中可以有多个URL指向一个一个视图,如:
urlpatterns = patterns('', url(r'^archive/(\d{4})/$', archive), url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}),)
这是可行的,当对于我上一篇记录的Django之逆向解析url就有困难了,因为同一个视图
有两个结果可以匹配,这里就用到了url()函数的参数name
可以这样:
urlpatterns = patterns('', url(r'^archive/(\d{4})/$', archive, name="full-archive"), url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}, name="arch-summary"),)这里对每一个试图对应的正则匹配一个名字,在模板中可以这样使用:
{% url 'arch-summary' 1945 %}{% url 'full-archive' 2007 %}
这样,使用url的逆向解析就一对一了,当然还有更好的解决方案,就是url的命名空间
1.命名空间:
就是在指定的name参数中加入冒号分割,如:myapp:index,表示命名空间为myapp,名字是index,
在使用时,可以这样:
{% url 'myapp:index' 1945 %}这样就能定位到指定的URLconf所指定的视图中。
2.url的命名空间,和include(URLconf)函数
在URLconf中可以使用include()函数,这个函数包含的也是一个URLconf,,但可以添加两个命名空间
1.应用程序级别application,的命名空间
2.实例级别instance的命名空间
例如:
url(r'^help/', include('apps.help.urls', namespace='foo', app_name='bar')),
这里app_name指定的是application级别的命名空间,而namespace指定的是instance级别的命名空间
所以可以这样来使用foo:bar:试图名,如对以下例子:
help_patterns = patterns('', url(r'^basic/$', 'apps.help.views.views.basic',name='basic'), url(r'^advanced/$', 'apps.help.views.views.advanced', name='advanced'),)url(r'^help/', include(help_patterns, 'bar', 'foo')),
解释一下:这里实际上是两个URLconf,但是通过include函数来把两个联合为一个URLconf了
所以,在模板中可以这样来使用,foo:bar:basic来引用,这样对于url逆向解析就不会出错了,
其中,application级别的命名空间包含instance级别的空间,其实,默认,每个app模块都有一个
命名空间,就是app的名字
- Django之URL的命名空间和命名模式
- Django之URL的命名空间和命名模式
- Django url的命名空间 url反向解析
- 模式对象的命名规则和命名空间
- JavaScript之命名空间模式
- 嵌套的命名空间和匿名的命名空间
- JavaScript之命名空间模式 浅析
- 设计模式-命名空间
- 命名空间之全名命名空间
- XAML命名空间和命名空间映射
- 默认命名空间和根命名空间
- c++学习之命名空间和异常
- c++之命名空间和结构体
- 浅谈C#命名空间的命名规范和习惯
- XML之命名空间
- 读书笔记之 -->"命名空间"
- C++之命名空间
- C++之命名空间
- Opencv图像显示出现倒立
- poj 2965 dfs+枚举
- 110301 WERTYU
- 现代操作系统学习笔记——进程
- HBase Flush操作流程以及对读写服务的影响
- Django之URL的命名空间和命名模式
- winform中打印datagridview中的数据无须制作报表
- 内心强大的人,才是真正有思想的人
- 深入学习TCPIP协议
- #pragma warning (disable: 4244)
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- CSDN的资源很多
- 数据库事务基础知识。
- [ git ] eclipse如何与git 配合工作。