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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯IVWEB团队的专栏

H5 的复制操作

HTML5 现在能完美提供给我们的应该就是 copy 事件的使用,对于市面上的 clipboard.js 差不多也是运用上述的知识点。根据上面的描述,可以了...

2.7K10
来自专栏魏艾斯博客www.vpsss.net

去掉 WordPress 网页图片默认链接功能

17730
来自专栏Angular&服务

Angular2 项目结构解释

9830
来自专栏运维

怎样把ESXI5.0导出的OVF模板导入到ESXI4.X中

怎样把ESXI5.0导出的OVF模板导入到ESXI4.X中 1,用workstation8或9打开ovf虚拟机模板,即建立了虚拟机 2,右击相应虚拟机---...

25220
来自专栏ionic3+

Cordova插件扩展——Themeablebrowser自拷贝图片

插件全名叫: cordova-plugin-themeablebrowser 这个插件会弹出一个浏览器窗口,打开外部网页,功能比较强大,能自定义导航工具栏、...

14550
来自专栏天天

微信小程序中自定义组件的使用

在开发过程中,加入有这样一种场景,就是在开发的过程中,我们一直要使用一些相同或者类似的结构,我们就可以自定义模块,方便使用,以及后期的维护,了解vue的同学就知...

15940
来自专栏小尘哥的专栏

nodejs作为前后端分离中间件的跨域解决方案

前后端分离时候SEO问题很头疼,上次提供了nuxt+axios解决服务端渲染问题的解决方案,其实nodejs一样可以做服务端渲染,这时候会产生ajax跨域问题,...

9420
来自专栏Java后端生活

EasyUI(一)--加载本地json数据

22740
来自专栏每日一篇技术文章

微信小程序_02创建一个简单的工程

这个时候运行一些 应该会报错,因为在myPage.js 里面没有写任何东西,程序找不到执行的函数

17520
来自专栏Python疯子

Airtest连接Android和iOS进行脚本测试和编写脚本

Airtest一般用于app测试,因为可以通过图片进行识别点击,也可以通过点坐标进行识别点击,所以也可以制作游戏点击脚本和应用的点击脚本。 Airtest可以...

88730

扫码关注云+社区

领取腾讯云代金券