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使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
python正常时间和unix时间戳相互转换的方法
Apr 23 Python
python 以16进制打印输出的方法
Jul 09 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 Python
Pytorch之扩充tensor的操作
Mar 04 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 20 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
理解javascript async的用法
2017/08/22 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
js实现表格数据搜索
2020/08/09 Javascript
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
python实现定时发送qq消息
2019/01/18 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
2013年学期结束动员演讲稿
2014/01/07 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
法人委托书范本格式
2014/09/15 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server