Django反向解析,根据路由自动生产超链接路径,重定向

本文介绍如何在Django中使用反向解析简化模板超链接和视图重定向。通过反向解析,当路由改变时,无需手动更新模板链接。内容涉及URL参数的传递、关键字传参及不同类型的参数配置。
摘要由CSDN通过智能技术生成

       随着功能越来越多,模板上的超链接也会越来越多,如果根据路由一旦变化,那模板上的超链接都需要变化,改起来就是一件特别麻烦的事情。所以就需要用到反向生成超链接

反向解析应用在两个地方:模板中的超链接,视图中的重定向。

编写视图

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

def center(request):
	return HttpResponse('center')

配置路由

path('reverse/',views.reverse),
path('reverse/',views.reverse),

编写模板

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<a href="/center">普通超链接</a>
</body>
</html>

利用反向解析

编写路由

path('reverse/',views.reverse, name='reverse'),
path('center/',views.center, name='center')

编写模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<a href="/center">普通超链接</a>
<a href="{% url 'news:center' %}">反向超链接</a>
</body>
</html>

URL参数

有些url配置项正则表达式中是有参数的,接下来讲解如何传递参数。

编写路由

path('center/<int:id>_<int:id1>', views.center1, name='center1'),

编写视图

def center1(request, id, id1):
    return HttpResponse('center')

编写模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<a href="/center">普通超链接</a>
<a href="{% url 'news:center' %}">反向超链接</a>
<a href="{% url 'news:center1' 0 1 %}">反向参数超链接</a>
</body>
</html>

关键字传参

编写路由

re_path('center1/(?P<id>[0-9]+)_(?P<id1>[0-9]+)', views.center1, name='center1'),

编写模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<a href="/center">普通超链接</a>
<a href="{% url 'news:center' %}">反向超链接</a>
<a href="{% url 'news:center1' 0 1 %}">反向参数超链接</a>
<a href="{% url 'news:center1' id=100 id1=99 %}">反向关键字参数超链接</a>
</body>
</html>

反向解析

不带参数

from django.shortcuts import redirect,reverse
return redirect(reverse('news:center1'))

普通参数

return redirect(reverse('news:center1', args=(0,1)))

关键字参数

return redirect(reverse('news:center1', kwargs={'id':100,'id1':98}))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值