Django URL反向解析如何使用,学习笔记分享?

2026-06-09 15:423阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计496个文字,预计阅读时间需要2分钟。

Django URL反向解析如何使用,学习笔记分享?

0x00 URL反向解析及三种不同的反向解析方式Django中提供了关于URL映射的解决方案,可以满足两个方向的使用需求:

1.普通解析过程:当客户端的浏览器发起一个URL请求时,Django根据URL解析配置找到对应的视图函数进行处理。

- 客户端浏览器发起URL请求。 - Django根据URL配置解析请求的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




Django URL反向解析如何使用,学习笔记分享?


本文共计496个文字,预计阅读时间需要2分钟。

Django URL反向解析如何使用,学习笔记分享?

0x00 URL反向解析及三种不同的反向解析方式Django中提供了关于URL映射的解决方案,可以满足两个方向的使用需求:

1.普通解析过程:当客户端的浏览器发起一个URL请求时,Django根据URL解析配置找到对应的视图函数进行处理。

- 客户端浏览器发起URL请求。 - Django根据URL配置解析请求的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




Django URL反向解析如何使用,学习笔记分享?