Django中url的反向查询的方法


Posted in Python onMarch 14, 2018

本文介绍了Django中url的反向查询的方法,分享给大家,具体如下:

明确几个概念:

1、application namespace :

正在部署的app的名称,一个app的多个实例应该具有相同的application namespace.

可以通过在URLconf模块(urls.py)中设置 app_name 属性(与urlpatterns属性同级)来指定application namesapce.
(在django2.0版本中必须设置 app_name )

2、instance namespace :

表示app的一个特定的实例.它在当前项目中应该是唯一的.一个app可以有多个实例!

3、默认实例(default instance of application) :

instace namesapce与所属app的application namespace相同的实例

4、当前实例 :

使用 reverse() 函数的 current_app 参数可以指定当前应用.

当要反向解析一个namespace URL(例如'polls:index')的时候,Django将切分名称为多个部分,然后按下面的步骤查找:

Django中url的反向查询的方法

通过django文档中的一个示例来说明,考虑polls应用有俩个实例'publisher-polls'和'author-polls':

#urls.py
from django.conf.urls import include, url

urlpatterns = [
  url(r'^author-polls/', include('polls.urls', namespace='author-polls')),
  url(r'^publisher-polls/', include('polls.urls', namespace='publisher-polls')),
]
from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
  path('', views.IndexView.as_view(), name='index'),
  path('<int:pk>/', views.DetailView.as_view(), name='detail'),
  ...
]

根据以上设置,可以使用下面的查询:

此时'polls:index'的namespace与当前app的application instance(及app_name)相匹配.如果其中一个实例是当前应用实例(current),例如正在渲染'author-polls'的detail视图,'polls:index'将解析到'author-polls'实例的index页面.下面的两种方式的结果都是'/author-polls/'

在类视图中:

reverse('polls:index', current_app=self.request.resolver_match.namespace)

在模板中: {% url 'polls:index' %}

如果没有当前实例(current),例如在站点的其它地方渲染一个页面.'polls:index'将解析到 polls 中最后一个注册的实例中.因为没有默认实例(instance namespace为'polls'的实例),将使用 polls 注册的最后一个实例.在这里将解析到'publisher-polls',因为它在 urlpatterns 的末尾.

如果解析'author-polls:index',将直接定位到'author-polls'的index页面.因为此时的namesapce是'author-polls',不能与application namespace匹配,根据上面的流程将直接查找instance namespace.

如果上面的app还有一个名为'polls'的默认实例,上面的第二种情况'polls:index'将解析到该默认实例,而不是 urlpatterns 中最后声明的实例.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python持久性管理pickle模块详细介绍
Feb 18 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
python pandas中对Series数据进行轴向连接的实例
Jun 08 Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
python中数据库like模糊查询方式
Mar 02 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
python代码实现备忘录案例讲解
Jul 26 Python
python ddt实现数据驱动
Mar 14 #Python
Python使用Django实现博客系统完整版
Sep 29 #Python
Python学生信息管理系统修改版
Mar 13 #Python
python之pandas用法大全
Mar 13 #Python
python使用sqlite3时游标使用方法
Mar 13 #Python
Python打印输出数组中全部元素
Mar 13 #Python
python实现学生信息管理系统
Apr 05 #Python
You might like
PHP在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
PHP入门学习笔记之一
2010/10/12 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
js下获取div中的数据的原理分析
2010/04/07 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
Python Property属性的2种用法
2015/06/21 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
python实现大量图片重命名
2020/03/23 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
关于Keras Dense层整理
2020/05/21 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
公证委托书模板
2014/04/03 职场文书
中药学专业求职信
2014/05/31 职场文书
联片教研活动总结
2014/07/01 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书