[django]url 参数/reverse和HttpResponseRedirect

Posted 毛台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[django]url 参数/reverse和HttpResponseRedirect相关的知识,希望对你有一定的参考价值。

参考

需要完成以下任务

- 访问http://127.0.0.1:8000/                  返回"hello maotai"或home.html
- 访问http://127.0.0.1:8000/add/?a=1&b=2      返回之和
- 访问http://127.0.0.1:8000/add2/2/3          返回值和
- 访问http://127.0.0.1:8000/add2_v2/2/3       跳转到add2,并返回之和

项目代码实现

views.html书写

views.html

#### 返回字符串
def index(request):
    return HttpResponse("hello maotai")

#### url参数 ?a=1&b=2 方式传参
def add(request):
    a = request.GET[\'a\']
    b = request.GET[\'b\']
    c = int(a) + int(b)
    return HttpResponse(c)

#### url参数/2/3 方式传递
def add2(request, a, b):
    c = int(a) + int(b)
    return HttpResponse(str(c))


#### 重定向到add2, url的cname
#### 模板解析也用到了reverse函数,解析谁? 解析html,将解析到的结果返回
def add2_v2(request, a, b):
    return HttpResponseRedirect(reverse(\'add2\', args=(a, b)))

#### 返回html
def home(request):
    return render(request, "home.html")

urls.py

urlpatterns = [
    path(\'\', views.index),
    path(\'home/\', views.home),
    path(\'add/\', views.add),
    path(\'add2/<int:a>/<int:b>\', views.add2, name=\'add2\'),
    path(\'add2_v2/<int:a>/<int:b>\', views.add2_v2, name=\'add2_v2\'),
    path(\'admin/\', admin.site.urls),
]

home.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>home</title>
</head>
<body>
<!-- url写死 -->
{#<a href="/add2/2/3">add 2+3 </a>#}

<!-- url写活 最终解析/add2/4/5 -->
<a href="{% url \'add2\' 4 5 %}">add2 4+5 </a> <br>
<a href="{% url \'add2_v2\' 4 5 %}">add2_v2 4+5 </a>
</body>
</html>

以上是关于[django]url 参数/reverse和HttpResponseRedirect的主要内容,如果未能解决你的问题,请参考以下文章

没有找到带有参数“()”和关键字参数“”的 Django Reverse

Django基础(10): URL重定向的HttpResponseDirect, redirect和reverse的用法详解

给Django中的url起名字

django-URL反向解析Reverse

Django框架中path及re_path中name参数的使用和模板渲染(八)

Django url 标签和reverse()函数的使用(转)