Django | URL反向解析

Django·Programming · 2022-04-15

代码中URL出现的位置

  1. Templates模板中(HTML中)
    <a href='url'>链接</a>点击后页面跳转至url
    <form action='url' method='post'>将form表单中的数据用post方法提交至url
  2. 视图函数中的302跳转,即HttpResponseRedirect('url'),将用户地址栏中的地址跳转到url(重定向)

URL的书写规范

  1. 绝对地址:http://127.0.0.1:8000/page/1
  2. 相对地址:
    第一种:'/page/1'以'/'开头的相对地址,浏览器会自动将当前地址栏中的协议、ip、端口加上这个地址,作为最终的访问地址。例如:当前页面地址栏为http://127.0.0.1:8000/page/3,则当前相对地址的最终结果会变为http://127.0.0.1:8000/page/1
    第二种:'page/1没有'/'开头的相对地址,浏览器会根据当前的url的最后一个/之前的内容加上该相对地址作为最终访问地址。例如:当前页面地址栏为http://127.0.0.1:8000/topic/detail,则当前相对地址的最终结果会变为http://127.0.0.1:8000/topic/page/1

URL反向解析

URL的反向解析是指在视图或模板中,用path定义的名称来动态查找或计算出相应的路由。回顾path函数的语法:

  • path(route, views, name='别名')
  • 例如:path('page', views.page_view, name='page_url')

根据path中的'name='关键字参数给url确定了唯一的名字,在模板或视图中,可以通过这个名字反向推断出此url的信息。

模板中的URL反向解析

在Template模板中,可以通过url标签实现地址的反向解析,代码为{% url '别名' ('参数值1' '参数值2' ……) %}
例如:{% url 'pagen' '400' %}{% url 'person' age='18' name='Mike' %}

视图函数中的URL反向解析

在view视图函数中,可调用django中的reverse方法进行反向解析,需要先导入该方法from django.urls import reverse,使用语法为reverse('别名', args=[], kwargs={})
例如:print(reverse('pagen', args=[300]))print(reverse('person', kwargs={'name':'Mike', 'age':18}))