Django的url反向解析
2018-03-17 10:01
821 查看
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:
1.模板中的反向解析
2.视图中的重定向
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'), #... )
1.模板中的反向解析
<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>
2.视图中的重定向
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的反向解析
- Django url的命名空间 url反向解析
- Python3之Django Web框架URL匹配、反向解析及部分错误处理
- Django url反向解析与路由分发名称空间
- Django url反向解析 reverse()
- django反向解析URL和URL命名空间的方法
- Django REST framework反向生成url
- Django URL解析的一些注意点
- Django之逆向解析url
- Django url解析出现unicode编码错误
- Django数据库表反向生成实例解析
- Django的url解析
- Django之逆向解析url
- django的url方向解析的书写的两种方式
- Django之反向生成url
- Django中url的逆向解析 -> Reverse resolution of URLs
- Django中url的反向查询的方法
- django源码分析--02url解析
- Django 的逆向解析url(转)
- [置顶] 简易PHP路由,支持正反向url解析支持