Django reverse

转载 2013年12月02日 18:04:36

django的一条哲学是(don't repeat yourself DRY ).熟悉django的人都知道,在0.96版中新加入了django.core.urlresolvers.reverse这个东东,下面让我们来看一下这究竟是怎样反映DRY思想的:
首先让我们一句话概括reverse()是干什么的?反解析url以直接访问其它视图方法。众所周知,在django的mvc(mvt也可以)中,url和view是通过url.py和views.py实现分离的,具体view的访问是通过url.py中设置的对应方法来实现的。这固然是正确的。但是考虑如下情况,我们有一个view最后实现页面跳转:

Python代码  收藏代码
  1. views.py  
  2. def redirect(request):  
  3.     return HttpResponseRedirect("/vote/1/")  
  4.   
  5. url.py  
  6. (r'^/vote/(?P<poll_id>\d+)/$','mysite.poll.vote')  
 

这样做起来就有1个问题:如果未来某天我们的url发生了改变,我们将不得不同时修改这两个文件。这和DRY哲学思想是冲突的,那么有什么办法能让我们只用修改url.py呢,答案就是使用reverse().
reverse的用例如下:

Python代码  收藏代码
  1. views.py  
  2.   
  3. from django.core.urlresolvers import reverse  
  4.   
  5. def redirect(request):  
  6.     return HttpResponseRedirect(reverse('mysite.polls.views.detail',args=(1,)))  
 

很容易明白,第一个参数就直接添入要使用的view方法,第二个args里边顺序填入方法的参数,(extra_context也从这里传入)然后剩下的就全部交给django去完成拉。于是我们就可以放心的修改url.py里的url配置,不必再担心有什么地方没修改网站出错啦.

Django中url的逆向解析 -> Reverse resolution of URLs

之前的一篇文章中介绍了url的基本用法
  • FeeLang
  • FeeLang
  • 2014年05月10日 15:14
  • 11446

Django url反向解析 reverse()

需求:在Django博客开发中,当点击一篇文章的继续阅读,展开整篇文章。 我们要获取这样的url:......./post/3 现在利用reverse()方法获取url: class Article(...
  • xunalove
  • xunalove
  • 2017年07月24日 14:00
  • 856

浅谈reverse函数与django哲学

    django的一条哲学是(dont repeat yourself DRY ).熟悉django的人都知道,在0.96版中新加入了django.core.urlresolvers.revers...
  • youngvleo
  • youngvleo
  • 2007年07月27日 11:00
  • 220

Django之逆向解析url

Django中提供了一个关于URL的映射的解决方案,你可以做两个方向的使用: 有客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的试图,获取相应的数据...
  • win_turn
  • win_turn
  • 2017年07月04日 19:53
  • 386

基于 Django1.10 文档的深入学习(13)—— django.core.urlresolvers 之 reverse()

reverse()如果您需要在代码中使用类似于url模板标签的内容,Django将提供以下功能:reverse(viewname,urlconf = None,args = None,kwargs =...
  • HeatDeath
  • HeatDeath
  • 2017年04月26日 21:18
  • 1293

DJango — URL的Reverse和Resolve

DJango系列的上一篇我们讲到了它是怎么解析和匹配URL的,并从URL中提取一些有用的信息(曾以year和month为例);但是,URL的管理仍然是一个巨大的工程,我们不得不维护数量庞大的patte...
  • junli_chen
  • junli_chen
  • 2015年08月29日 09:42
  • 601

浅谈reverse函数与django哲学

django的一条哲学是(dont repeat yourself DRY ).熟悉django的人都知道,在0.96版中新加入了django.core.urlresolvers.reverse这个东...
  • jiangnanandi
  • jiangnanandi
  • 2009年02月03日 15:01
  • 2155

Django之reverse在1.11与2.0的区别

上图:代码:reverse源码变动:
  • qq_33733970
  • qq_33733970
  • 2017年12月15日 16:27
  • 213

Django1.8教程重点

django 1.8教程重点笔记
  • anakinbj
  • anakinbj
  • 2015年09月09日 22:45
  • 635

[Django]几种重定向的方式

这里使用的是django1.5 需求: 有一个界面A,其中有一个form B, 前台提交B之后,后台保存数据之后,返回界面A,如果保存失败需要在A界面提示错误。 这里就需要后台的重定向,而且需要可...
  • lzz957748332
  • lzz957748332
  • 2014年08月02日 14:13
  • 20160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Django reverse
举报原因:
原因补充:

(最多只允许输入30个字)