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 相关文章推荐
简介Django框架中可使用的各类缓存
Jul 23 Python
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 Python
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Python 数据可视化pyecharts的使用详解
Jun 26 Python
如何利用Python动态模拟太阳系运转
Sep 04 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
Python的轻量级ORM框架peewee使用教程
Feb 05 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
Jun 01 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的一个登录的类 [推荐]
2007/03/16 PHP
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
php 团购折扣计算公式
2011/11/24 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
php5与php7的区别点总结
2019/10/11 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
python求素数示例分享
2014/02/16 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
日语专业个人的求职信
2013/12/03 职场文书
给儿子的表扬信
2014/01/15 职场文书
元旦晚会邀请函
2014/01/27 职场文书
年会邀请函范文
2015/01/30 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js