django

Django-08 url反向解析

2021-07-11  本文已影响0人  JuliusL

代码中url出现的位置

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

代码中url书写规范

  1. 绝对地址
    http://127.0.0.1:8000/page/1
  2. 相对地址
    1. '/page/1' - '/' 开头的相对地址,浏览器会把当前地址栏里的协议,ip和端口加上这个地址,作为最终可访问地址,即如果当前页面为http://127.0.0.1:8000/page/3;当前相对地址最终结果为http://127.0.0.1:8000 + /page/1
    2. 'page/1' - 没有 '/' 开头的相对地址,浏览器会根据当前url的最后一个 / 之前的内容加上该相对地址作为最终访问地址,例如当前地址栏地址为http://127.0.0.1:8000/topic/detail;则该相对地址最终为http://127.0.0.1:8000/topic + page/1

测试用例:

def test_url(request):
    return render(request,'test_url.html')

def test_url_result(request):
    return HttpResponse('test url is ok')
<body>
<a href='http://127.0.0.1:8000/test_url_result'>绝对地址</a>
<a href='/test_url_result'>带'/'的相对地址</a>
<a href='test_url_result'>不带'/'的相对地址</a>
</body>

url反向解析

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

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

模板中-通过url标签实现地址的反向解析

{% url '别名' %}
{% url '别名' ‘参数1’ ‘参数2’ %}
ex:
{% url 'pagen' '400' %}
{% url 'person' age='18' name='gxn' %}

urls.py

path('test_url_result/<int:age>',views.test_url_result,name = 'tr'),

在视图函数中 -> 可调用django中的reverse方法进行反向解析

from django.urls import reverse
reverse('别名',args=[],kwargs={})
ex:
print(reverse('pagen',args=[300]))
print(reverse('person',kwargs={'name':'xixi','age':18}))
def test_url_result(request,age):
    from django.urls import reverse
    url = reverse('base_index')
    return HttpResponseRedirect(url)

tips:302跳转是根据响应头里的locatioon标记的地址进行跳转

上一篇下一篇

猜你喜欢

热点阅读