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最后实现页面跳转:
views.py
def redirect(request):
return HttpResponseRedirect("/vote/1/")
url.py
(r'^/vote/(?P<poll_id>\d+)/$','mysite.poll.vote')
这样做起来就有1个问题:如果未来某天我们的url发生了改变,我们将不得不同时修改这两个文件。这和DRY哲学思想是冲突的,那么有什么办法能让我们只用修改url.py呢,答案就是使用reverse().
reverse的用例如下:
views.py
from django.core.urlresolvers import reverse
def redirect(request):
return HttpResponseRedirect(reverse('mysite.polls.views.detail',args=(1,)))
很容易明白,第一个参数就直接添入要使用的view方法,第二个args里边顺序填入方法的参数,(extra_context也从这里传入)然后剩下的就全部交给django去完成拉。于是我们就可以放心的修改url.py里的url配置,不必再担心有什么地方没修改网站出错啦.
分享到:
相关推荐
本篇文章主要是对js中reverse函数的用法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
有哥们在群里问DB2有没有自带的reverse函数,我测试一下,DB2确实内置该函数,但是oracle,sql server都内置了该函数,来看一下
django-js-reverse:对Django的Javascript URL处理没有影响
在写项目的过程中,有些函数不可避免的需要传入参数进去,所以我们在使用reverse进行反转时也需要传递参数。这个时候我们就可以使用 ‘reverse()’ 中的 kwargs 参数了,它将传入一个字典形式的变量。kwargs 也...
2. 字符串反转函数:reverse 23 3. 字符串连接函数:concat 23 4. 带分隔符字符串连接函数:concat_ws 23 5. 字符串截取函数:substr,substring 24 6. 字符串截取函数:substr,substring 24 7. 字符串转大写函数:...
reverse函数,翻转列表 然后我改了一下 >>> L2.reverse() >>> L3=L2 >>> print(L3) [4, 3, 2, 1] >>> print(L2) [4, 3, 2, 1] >>> 这是在网上找到的解释 a=[1,2,3,4].reverse() – why “a” is Non
python库。 资源全名:django-js-reverse-0.7.0.tar.gz
从键盘输入字符串,用函数void reverse(char *source)通过递归法实现字符串逆序.
数值计算函数 FileOPen() Reverse() Abs() 日期、时间函数 FileRead() ToAnsi() Ceiling() Day() FileSeek() ToUnicode() Cos() DayName() FileWrite() Exp() DayNumber() GetFileOpenName() 其他函数 ...
解决path中带参数的路径。...from django.shortcuts import render,redirect,reverse # Create your views here. def index(request): username = request.GET.get(username) if username is not N
gerber转PADS教程--Reverse Engneering既Gerber转PowerPCB操作手册
reverse c++
Mastering Reverse Engineering
django admin提供了完善的用户管理和数据模型管理,方便实用。研究了一下在admin里面添加自己的页面。 在admin.py里继承django.contrib.admin.ModelAdmin基类 class FaceAdmin(admin.ModelAdmin): 然后在里面写自己...
iOS App ReverseEngineering
python 零基础学习篇
django-definicoes Django:Guia dedefiniçõespara重定向,reverse,reverse_lazy,HttpResponse输入结果Este projeto foi feito com: Como rodar o projeto? 克隆esserepositório。 使用Python创建虚拟环境3。...