Django之url反向解析

  urls.py文件中,在进行url映射时,为请求的url命个名,以便在模板页面或者views.py视图中可以进行反向解析,同时在修改了url映射的请求路径,名称不变的情况下,不再修改模板页面或者视图中的数据,项目不受影响正常执行!url标签中使用模板变量和普通标签参数一样,空格隔开,{{ % url   别名   %}}即可。

 

urls.py文件设置:  

url(r'^url_reverse/', views.url_reverse,name="view_reverse"),
url(r'^login/', views.login,name="logining"),

模板页面url反向解析:

url_reverse.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>页面url反向解析</title>
 6 </head>
 7 <body>
 8 <h1><a href="{% url "logining" %}">登录</a></h1>
 9 {#{% url "loging" %}通过url反向解析名称"loging",直接获取到urls.py模块中与之对应的url路径"login/"#}
10 </body>
11 </html>

  login.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>login</title>
 6 </head>
 7 <body>
 8 <form action="http://127.0.0.1:8888/login/" method="post">
 9     {% csrf_token %}<!--在进行模板渲染时会自动生成一个隐藏的input标签-->
10    <table>
11     <tr>
12         <td>用户名:</td>
13         <td><input type="text" name="username"></td>
14     </tr>
15     <tr>
16         <td>密码:</td>
17         <td><input type="text" name="userpsd"></td>
18     </tr>
19     <tr>
20         <td><input type="reset"></td>
21         <td><input type="submit" ></td>
22     </tr>
23        </table>
24 </form>
25 </body>
26 </html>
27  

views.py视图中url反向解析:

 1 from django.shortcuts import render, HttpResponse, redirect
 2 from django.urls import reverse 
 3  
 4 def url_reverse(request):
 5     return render(request,"url_reverse.html")
 6  
 7 def login(request):
 8     if request.method=="GET":
 9         return render(request,"login.html")
10     elif request.method=="POST":
11         name=request.POST.get("username")
12         psd=request.POST.get("userpsd")
13         if name=="yang" and psd=="123":
14             return HttpResponse("<h1>Success!</h1>")
15         else:
16             return redirect(reverse("view_reverse"))
17        #调用reverse()方法,参数为urls.py中的url名称,进行反向解析拿到"url_reverse/"
18  
19             # return redirect("view_reverse")  #redirect自带了url反向解析,可以不用重复调用reverse(),直接引用名称

模板页面反向url解析补充:

url标签使用模板变量参数:

urls.py:

url(r'^update/book_id=([0-9]+)', views.update,name="update"),

 

views.py

return render(request, "update.html", {"book":book_odj}) 

 

 html:

<form action="{% url "update" book.id %}" method="post">

 

原文地址:https://www.cnblogs.com/open-yang/p/11221862.html