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中获取对象信息的方法
Apr 27 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
May 25 Python
python中字符串前面加r的作用
Jun 04 Python
Python简单操作sqlite3的方法示例
Mar 22 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
selenium+python实现1688网站验证码图片的截取功能
Aug 14 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 Python
python opencv实现图像配准与比较
Feb 09 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
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
php操作MongoDB类实例
2015/06/17 PHP
Symfony核心类概述
2016/03/17 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
JavaScript函数详解
2015/02/27 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
点评js异步加载的4种方式
2015/12/22 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
浅析node.js的模块加载机制
2018/05/25 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
keras得到每层的系数方式
2020/06/15 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
安全生产活动月方案
2014/03/09 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
开工典礼致辞
2015/07/29 职场文书
高中班长竞选稿
2015/11/20 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers