• 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">

     

  • 相关阅读:
    [转] java代码块 介绍
    win10多用户远程登录
    [读书笔记] learn python the hard way书中 有关powershell 的一些小问题
    Ansible 汇总
    Shell 研究
    Linux CenOS Python3 和 python2 共存
    Ansible安装
    MySQL 5.7.20绿色版安装详细图文教程
    Mysql常用运算符与函数汇总
    mysql 从陌生到熟练之----数据库备份恢复的实现方法
  • 原文地址:https://www.cnblogs.com/open-yang/p/11221862.html
Copyright © 2020-2023  润新知