zoukankan      html  css  js  c++  java
  • Django学习笔记之Django的url反向解析

    0x00 URL反向解析和三种不同的反向解析方式

    Django中提供了关于URL的映射的解决方案,可以做两个方向的使用:

    1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的视图,获取相应的数据,然后返回给客户端显示。
    2.反向解析:通过一个视图的名字,再加上一些参数和值,逆向获取相应的URL。

    Django提供了三种不同反向解析处理方式:

    1.在模板templates中,使用url标记,如:{% url %}
    
    2.在view中,使用django.core.urlresolvers.reverse()方法
    
    3.在更高一层级的处理url中,用get_absolute_url()方法

    如下的URLconf:

    from django.conf.urls import patterns, url
    urlpatterns = patterns('',
        #...
        url(r'^articles/(d{4})/$', 'news.views.year_archive'),
        #...
    )

    0x01 模板中的反向解析

    <a href="{% url 'news.views.year_archive' 2012 %}">2012 Archive</a>
    
    
    # 解释一下:首先,根据视图 'news.views.year_artichive'可以定位到指定的URLconf中,然后后面的2012来填充articles/d{4}
    # 最终的结果为<a href="articles/2012/">2012 Archive</a>

    0x02 视图中的重定向

    from django.core.urlresolvers import reverse
    from django.http import HttpResponseRedirect
    def redirect_to_year(request):
        # ...
        year = 2006
        # ...
        return HttpResponseRedirect(reverse('news.views.year_archive', args=(year,)))
    
    # 解释一下:首先,必须引入django.core.urlresolvers.reverse()方法,然后原理是根据提供的视图和参数的值来逆向查找URLconf,匹配相应的url然后把值拿回来,
    # 最后,reverse()返回的值为:articles/2006/,这样就逆向的查出了需要的url
  • 相关阅读:
    laravel 汇总数据
    Sway
    利用 Windows API Code Pack 修改音乐的 ID3 信息
    Windows Server 2012 R2 设置 NTP 服务
    Visual Studio "14" CTPs
    Win8.1 查看 “Windows 体验指数“
    json2csharp & json 格式化
    山寨版 WP8.1 Cortana 启动 PC
    Newtonsoft.Json WindowPhone7.1
    Cisco交换机基础命令 + Win Server08 R2 多网卡配置链路聚合
  • 原文地址:https://www.cnblogs.com/JetpropelledSnake/p/9360033.html
Copyright © 2011-2022 走看看