URL 反向解析

2018-10-16  本文已影响0人  叶田的学习笔记

URL正向解析:
有客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的试图,获取相应的数据,然后返回给客户端显示。
根据用户/浏览器发起的URL请求,它调用正确的Django视图,并从URL中提取它的参数需要的值。

URL反向解析:
通过一个视图的名字,再加上一些参数和值,逆向获取相应的URL。
根据Django视图中的标识和将要传递给它的参数的值,获取与之关联的URL。

Django提供了不同的层级的url逆向处理工具:

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

urls.py中:

from django.urls import path
from . import views

urlpatterns = [
      path('articles/<int:year>/',views.year_archive,name='year_archive'),
]

html模板中:

<a href="{% url 'year_archive' 2012 %}">2012 Archive</a>
<ul>
{% for yearvar in year_list %}
<li><a href="{% url 'year_archive' yearvar %}">{{ yearvar }} Archive</a></li>
{% endfor %}
</ul>

Python代码中:

from django.urls import reverse
from django.http import HttpResponseRedirect

def redirect_to_year(request):
    # ...
    year = 2006
    # ...
    return HttpResponseRedirect(reverse('year_archive', args=(year,)))

get_absolute_url()方法:

class Article(models.Model):
 
    def get_absolute_url(self):
        return reverse('blog:detail', kwargs={'pk': self.pk})

当点击一篇文章的继续阅读,跳转文章详情页面

上一篇下一篇

猜你喜欢

热点阅读