反向解析URL

反向解析URL

反向解析URL的应用:
在模板中反向解析URL不会出现404,反向解析能让url一直保持正确匹配,就算修改了刷新一下网页也同样会动态匹配:


urls.py

from django.contrib import admin
from django.urls import path, re_path, include
from . import views

urlpatterns = [
    path('test1/page1/', views.test1),
    path('test2/page2/', views.test_url_result, name = "show_url"),
]
<html>
<head>
	<title>牛逼666</title>
</head>
<body>
	<a href = "http://127.0.0.1:8000/test2/page2">绝对地址</a>
	<a href = "/test2/page2">带'/'的地址</a>
	<a href = "{% url 'show_url' %}">反向解析网址</a>
</body>
</html> 
from django.http import HttpResponse
from django.urls import reverse
from django.shortcuts import render

def test1(request):
    return render(request, 'showUrl.html')

def test_url_result(request):
    return HttpResponse('-----test url is ok')

测试:
在这里插入图片描述
观察左下角的反向解析URL的结果:
在这里插入图片描述
更新一下path函数的URL:

from django.contrib import admin
from django.urls import path, re_path, include
from . import views

urlpatterns = [
    path('test1/page1/', views.test1),
    path('asdasasdad/page2/', views.test_url_result, name = "show_url"),
]

如上所示,然后刷新一下网页,在观察得到的URL:
在这里插入图片描述
在动态更新,只要得到我们的URL的name,进行反向解析后就能准确无误的得到URL,不会向下面情况一样出现404:
利用不带“/”的相对地址进行测试,那么就会找到最后一个/,删去后面的所有东西然后再连接上去,所以很容易出现404:
在这里插入图片描述
在这里插入图片描述
极其容易出错!

当被反向解析的URL带有参数时:需要传参:

<html>
<head>
	<title>牛逼666</title>
</head>
<body>
	<a href = "http://127.0.0.1:8000/test2/page2">page2绝对地址</a>
	<a href = "{% url 'fuck' '100' %}">模板反向解析网址</a>
	<a href = "{% url 'show_url' '100' %}">模板反向解析show_url</a>
	<a href = "/test1/page1/">带有'/'的相对地址</a>
</body>
</html>
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from django.shortcuts import render

def test1(request):
    url = reverse('fuck', kwargs = {'data':number})
    return HttpResponseRedirect(url)
    
def test2(request, number):
    return HttpResponse("fuck u, %s asshole" % number)
    
def html(request):
    return render(request, 'showUrl.html')

def test_url_result(request, age):
    return HttpResponse('-----test url is ok')
    
from django.contrib import admin
from django.urls import path, re_path, include
from . import views

urlpatterns = [
    path('test/page/', views.html),
    path('test1/page1/', views.test1),
    path('test2/page2/<int:number>', views.test2, name = 'fuck'),
    path('asdasd/page2/<int:age>', views.test_url_result, name = "show_url"),
]

在这里插入图片描述
综上所述,反向解析URL的主要作用就是防止出现利用相对路径时出现的404情况,直接动态反向解析无论怎么更改URL,最后都会成功解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值