美文网首页
URL 反向解析

URL 反向解析

作者: 叶田的学习笔记 | 来源:发表于2018-10-16 11:49 被阅读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})
    

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

    相关文章

      网友评论

          本文标题:URL 反向解析

          本文链接:https://www.haomeiwen.com/subject/wuoczftx.html