1. 程式人生 > >[django]url 參數/reverse和HttpResponseRedirect

[django]url 參數/reverse和HttpResponseRedirect

ctype ota edi 參考 htm url參數 att charset ever

參考

需要完成以下任務

- 訪問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