Python Django框架url反向解析实现动态生成对应的url链接示例


Posted in Python onOctober 18, 2019

本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接。分享给大家供大家参考,具体如下:

  • url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码)。
  • url反向解析应用在两个地方:模板中的超链接,视图中的重定向。

项目名/urls.py(项目的url路由配置,url反向解析,取namespace名字):

from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
 url(r'^admin/', include(admin.site.urls)),
 url(r'^', include('booktest.urls', namespace='booktest')), # 为对应的应用中的url路由定义namespace名字。
]

应用名/urls.py(应用的url路由配置,为url路由取name名字):

from django.conf.urls import url
from booktest import views
urlpatterns = [
 url(r'^index$', views.index, name='index'), # url反向解析,取name名字。
 url(r'^show_args/(\d+)/(\d+)$', views.show_args, name='show_args'), # 捕获位置参数
 url(r'^show_kwargs/(?P<c>\d+)/(?P<d>\d+)$', views.show_kwargs, name='show_kwargs'), # 捕获关键字参数
]

应用名/views.py(视图,视图函数中使用url反向解析):

from django.shortcuts import render,redirect
from django.core.urlresolvers import reverse # url反向解析
# 视图函数。 视图函数中使用url反向解析,动态生成对应的url。
def test_redirect(request):
 # 重定向到/index
 # url = reverse('booktest:index')
 # 重定向到/show_args/1/2 url中有位置参数
 # url = reverse('booktest:show_args', args=(1,2)) # url中拼接位置参数
 # 重定向到/show_kwargs/3/4 url中有关键字参数
 url = reverse('booktest:show_kwargs', kwargs={'c':3, 'd':4}) # url中拼接关键字参数
 return redirect(url)
 # return redirect('/index')

templates/应用名/demo.html(模板文件,模板中使用url反向解析):

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>url反向解析</title>
</head>
<body>
 url反向解析动态生成index链接:<br/>
 <a href="{% url 'booktest:index' %}" rel="external nofollow" >首页</a>
 url中传递位置参数,动态产生/show_args/1/2:<br/>
 <a href="{% url 'booktest:show_args' 1 2 %}" rel="external nofollow" >url中传递位置参数</a><br/>
 url中传递关键字参数:/show_kwargs/3/4:<br/>
 <a href="{% url 'booktest:show_kwargs' c=3 d=4 %}" rel="external nofollow" >url中传递关键字参数</a>
</body>
</html>

在模板文件中使用url反向解析,格式如下:

{% url 'namespace名字:name名字' %} 例如 {% url 'booktest:fan2' %}

带位置参数:

{% url 'namespace名字:name名字' 位置参数 %} 例如 {% url 'booktest:fan2' 1 %}

带关键字参数:

{% url 'namespace名字:name名字' 关键字参数 %}  例如 {% url 'booktest:fan2' id=1 %}

视图中使用url反向解析(可用于重定向):

from django.core.urlresolvers import reverse

无参数:

reverse('namespace名字:name名字')

如果有位置参数

reverse('namespace名字:name名字', args = 位置参数元组)

如果有关键字参数

reverse('namespace名字:name名字', kwargs=字典)

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

Python 相关文章推荐
python小技巧之批量抓取美女图片
Jun 06 Python
教你如何在Django 1.6中正确使用 Signal
Jun 22 Python
python实现的简单猜数字游戏
Apr 04 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
Python 在函数上添加包装器
Jul 28 Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 #Python
python处理excel绘制雷达图
Oct 18 #Python
使用Python进行中文繁简转换的实现代码
Oct 18 #Python
Python Django框架防御CSRF攻击的方法分析
Oct 18 #Python
python使用matplotlib绘制雷达图
Oct 18 #Python
Python 日志logging模块用法简单示例
Oct 18 #Python
python调用matplotlib模块绘制柱状图
Oct 18 #Python
You might like
多人战的战术与战略
2020/03/04 星际争霸
解析PHP 5.5 新特性
2013/07/02 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
js window.event对象详尽解析
2009/02/17 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
python模拟斗地主发牌
2020/04/22 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
初中美术教学反思
2014/01/29 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
生物学专业求职信
2014/07/23 职场文书
小学生安全责任书
2014/07/25 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
MyBatis 动态SQL全面详解
2021/10/05 MySQL
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript