`
xiaolin0199
  • 浏览: 573355 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转]浅谈reverse函数与django哲学

阅读更多

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配置,不必再担心有什么地方没修改网站出错啦.
分享到:
评论

相关推荐

    DB2中REVERSE函数的实现方法

    然而,DB2的`REVERSE`函数的实现与Oracle和SQL Server有所不同。由于DB2内部并没有预定义的`REVERSE`函数,我们可以自定义一个。下面是一个示例,展示了如何在DB2中创建一个`REVERSE`函数: ```sql CREATE OR ...

    Django中reverse反转并且传递参数的方法

    在写项目的过程中,有些函数不可避免的需要传入参数进去,所以我们在使用reverse进行反转时也需要传递参数。这个时候我们就可以使用 ‘reverse()’ 中的 kwargs 参数了,它将传入一个字典形式的变量。kwargs 也...

    Python库 | django-js-reverse-0.7.0.tar.gz

    在传统的Django应用中,URL通常是通过模板中的`reverse()`函数生成的,这对于服务器端渲染非常方便。然而,在前后端分离的现代Web开发中,JavaScript通常负责客户端渲染。在这种情况下,前端需要知道后端的URL以便...

    DJANGO-URL反向解析REVERSE实例讲解

    在开发过程中,为了提高代码的可维护性与模块间的解耦,Django允许开发者通过URL配置(urls.py文件)为各个视图函数定义一个名称(name参数),从而可以在代码中通过这个名称来引用对应的URL,这就是所谓的URL反向...

    django-js-reverse:对Django的Javascript URL处理没有影响

    2. **URL反转**:在JavaScript中,你可以使用`django_js_reverse.reverse()`函数来获取URL的完整路径,只需要提供URL的名称即可。例如: ```javascript var url = django_js_reverse.reverse('app_name:url_name')...

    js中reverse函数的用法详解

    JavaScript中的Array对象提供了很多有用的方法来操作数组,其中包括reverse方法。reverse方法是一个非常便捷的工具,用于将数组中的元素顺序进行颠倒。以下是对该方法的详细讲解: 首先,reverse方法直接作用于数组...

    2023年Django大二下学期期末复习

    2. 反向解析:通过reverse函数,可以根据视图名称或别名生成URL。 六、表单(Form) 1. ModelForm:基于模型生成表单,简化数据验证和处理。 2. 自定义表单:直接继承forms.Form类,定义字段及验证规则。 3. 表单...

    django 返回 html 函数的区别

    ## django开发中,有不同的返回给前端的函数,下面介绍几个,在开发中遇到的小情况: ``` python return render(request, "vpn_add.html") #最常用的 return HttpResponseRedirect(reverse('vpn_add')) #比较常用...

    hive函数大全(中文版)

    2. 字符串反转函数:reverse 23 3. 字符串连接函数:concat 23 4. 带分隔符字符串连接函数:concat_ws 23 5. 字符串截取函数:substr,substring 24 6. 字符串截取函数:substr,substring 24 7. 字符串转大写函数:...

    Django 反向生成url实例详解

    2. 在Python代码中使用reverse方法:在视图函数或其他Python代码中,可以通过django.core.urlresolvers模块下的reverse函数来获取URL。reverse函数接受一个视图名称以及一些参数作为输入,并返回一个字符串形式的URL...

    SQL脚本函数 16进制转换为10进制

    尤其是在处理网络协议、加密算法或是数据存储格式时,十六进制与十进制之间的转换显得尤为重要。SQL作为关系型数据库的标准查询语言,提供了丰富的功能来支持这类操作。 #### SQL脚本函数详解 该脚本定义了一个名为...

    django tutorial

    回顾本节内容,我们学习了如何设置 Django 项目的数据库、创建模型、与模型交互以及编写测试。 #### 三、编写视图 ##### 3.1 视图基础 视图是 Django 应用的核心部分,用于处理请求并将响应返回给客户端。 例如...

    python的reverse函数翻转结果为None的问题

    ### Python的reverse函数翻转结果为None的问题 在Python编程语言中,`reverse()`方法用于反转列表中的元素顺序。此方法直接在原列表上进行操作,并不会返回一个新的列表。因此,当你试图将`reverse()`方法的结果...

    Django前端模板及crispy form美化等

    本文档作为对上一篇关于Django用户登录注册等内容的延续,主要聚焦于如何利用第三方库Crispy Forms来实现前端页面的美化与优化。对于初学者而言,掌握Django前端模板的应用以及如何结合Bootstrap框架来提升用户体验...

    Django框架中的英文单词.docx

    本文将详细解释与Django框架相关的英文单词及其在编程语境下的含义。 1. **Django** ['dʒæŋɡəʊ ]:Django的发音可能对初学者来说有些困扰,但它的意思是“张沟”,而不是“第张沟”。它是以爵士乐手的名字...

    Django 路由控制的实现代码

    - 通过在`url()`函数中指定`name`参数,可以为URL模式创建一个名称,便于在模板中使用`reverse()`函数生成URL。 通过理解以上概念,开发者能够构建高效且易于维护的Django应用,确保每个URL请求都能正确地映射到...

    C++ reverse介绍及使用

    在C++编程语言中,`std::reverse`函数是一个非常实用的工具,它允许程序员轻松地反转各种序列,包括字符串和数组。这个函数是C++标准库中的成员,位于`&lt;algorithm&gt;`头文件中。本篇文章将深入探讨`std::reverse`函数...

    3. Django 初探路由

    Django的路由系统允许开发者定义URL模式,将这些模式与特定的视图函数关联,当用户访问匹配的URL时,对应的视图函数会被调用以处理请求。这被称为URL到视图的映射。 ### 2. 配置URLconf Django项目的`urls.py`文件...

Global site tag (gtag.js) - Google Analytics