Django框架反向解析操作详解

作者:ITxiaoke 时间:2023-12-31 03:06:49 

本文实例讲述了Django框架反向解析操作。分享给大家供大家参考,具体如下:

1. 定义:

随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式,但是正则表达式一旦修改了,之前所有对应的超链接都要修改,真是一件麻烦的事情,而且可能还会漏掉一些超链接忘记修改,有办法让链接根据正则表达式动态生成吗? 就是用反向解析的办法。

2. 应用范围:

  • 模板中的超链接

  • 视图中的重定向

3. 使用方法:

  • 定义url时,需要为include定义namespace属性,为url定义name属性

  • 使用时,在模板中使用url标签,在视图中使用reverse函数,根据正则表达式动态生成地址,减轻后期维护成本。

4. 模板中超链接步骤:

1)在项目urls.py中为include定义namespace属性。


url(r'^',include('booktest.urls',namespace='booktest')),

2)在应用的urls.py中为url定义name属性,并修改为fan2。


url(r'^fan2/$', views.fan2,name='fan2'),

3)在模板中使用url标签做超链接,此处为templates/booktest/fan1.html文件。


<html>
<head>
 <title>反向解析</title>
</head>
<body>
普通链接:<a href="/fan2/" rel="external nofollow" >普通fan2</a>
<hr>
反向解析:<a href="{%url 'booktest:fan2'%}" rel="external nofollow" >反向解析fan2</a>
</body>
</html>

4)回到浏览器中,后退,刷新,查看源文件,两个链接地址一样。

 Django框架反向解析操作详解

5)在应用的urls.py中,将fan2修改为fan_show。


url(r'^fan_show/$', views.fan2,name='fan2'),

6)回到浏览器中,刷新,查看源文件,两个链接地址不一样。

Django框架反向解析操作详解

4. 视图中的重定向:


from django.shortcuts import redirect
from django.core.urlresolvers import reverse
return redirect(reverse('booktest:fan2'))

5. 反向解析中URL的参数

位置参数

1)在booktest/urls.py中,修改fan2如下:


url(r'^fan(\d+)_(\d+)/$', views.fan2,name='fan2'),

2)修改templates/booktest/fan1.html文件如下:


<html>
<head>
 <title>反向解析</title>
</head>
<body>
普通链接:<a href="/fan2_3/" rel="external nofollow" >fan2</a>
<hr>
反向解析:<a href="{%url 'booktest:fan2' 2 3%}" rel="external nofollow" >fan2</a>
</body>
</html>

3)回到浏览器中,刷新,查看源文件如下图:

Django框架反向解析操作详解

使用重定向传递位置参数格式如下:


return redirect(reverse('booktest:fan', args=(2,3)))

关键字参数

1)在booktest/urls.py中,修改fan2如下:


url(r'^fan(?P<id>\d+)_(?P<age>\d+)/$', views.fan2,name='fan2'),

2)修改templates/booktest/fan1.html文件如下:


<html>
<head>
 <title>反向解析</title>
</head>
<body>
普通链接:<a href="/fan100_18/" rel="external nofollow" >fan2</a>
<hr>
反向解析:<a href="{%url 'booktest:fan2' id=100 age=18%}" rel="external nofollow" >fan2</a>
</body>
</html>

3)回到浏览器中,刷新,查看源文件如下图:

Django框架反向解析操作详解

使用重定向传递关键字参数格式如下:


return redirect(reverse('booktest:fan2', kwargs={'id':110,'age':26}))

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

来源:https://blog.csdn.net/u014745194/article/details/74010736

标签:Django,反向解析
0
投稿

猜你喜欢

  • 对python中Matplotlib的坐标轴的坐标区间的设定实例讲解

    2023-06-28 10:18:40
  • jQuery是用来干什么的 jquery其实就是一个js框架

    2024-04-22 22:22:42
  • Python反爬虫技术之防止IP地址被封杀的讲解

    2022-05-09 10:44:12
  • 学习ASP.NET八天入门:第五天

    2007-08-07 13:43:00
  • 关于搜索建议的两点小问题

    2011-09-16 20:15:29
  • Windows下MySQL安装教程图文详解

    2024-01-13 11:58:08
  • asp如何限制重复订阅邮件或重复投票?

    2010-06-09 18:48:00
  • Python实现双X轴双Y轴绘图的示例详解

    2021-10-17 17:33:58
  • Pyorch之numpy与torch之间相互转换方式

    2022-02-09 14:50:00
  • 浅谈python锁与死锁问题

    2022-06-02 16:38:37
  • 如何解决MySQL的客户端不支持鉴定协议

    2008-11-27 17:10:00
  • ASP对FoxPro自由表(DBF文件)的操作

    2010-05-27 12:20:00
  • 六种php加密解密方法实例讲解

    2023-07-01 12:16:02
  • Python 获得13位unix时间戳的方法

    2022-12-08 18:26:25
  • python opencv 画外接矩形框的完整代码

    2023-02-25 05:00:46
  • tensorflow使用L2 regularization正则化修正overfitting过拟合方式

    2023-11-26 04:07:32
  • python生成n个元素的全组合方法

    2023-11-10 20:35:08
  • tensorflow 中对数组元素的操作方法

    2022-01-22 11:35:37
  • 网页图片按钮的生成与美化

    2008-12-12 13:03:00
  • 关于matplotlib及相关cmap参数的取值方式

    2023-06-26 15:19:18
  • asp之家 网络编程 m.aspxhome.com