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实现域名系统(DNS)正向查询的方法
Apr 19 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
Python制作刷网页流量工具
Apr 23 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
python 实现数字字符串左侧补零的方法
Dec 04 Python
详解Python学习之安装pandas
Apr 16 Python
Django 配置多站点多域名的实现步骤
May 17 Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
Django REST framework 限流功能的使用
Jun 24 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
php遍历数组的方法分享
2012/03/22 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
javascript事件模型介绍
2016/05/31 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
python logging模块的使用总结
2019/07/09 Python
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
坎儿井导游词
2015/02/09 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
详解python网络进程
2021/06/15 Python
Mysql binlog日志文件过大的解决
2021/10/05 MySQL