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 输出一个两行字符的变量
Feb 05 Python
通过5个知识点轻松搞定Python的作用域
Sep 09 Python
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
Python设计模式之代理模式实例详解
Jan 19 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
Python实现中值滤波去噪方式
Dec 18 Python
Python读取二进制文件代码方法解析
Jun 22 Python
Pytorch上下采样函数--interpolate用法
Jul 07 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
Python爬虫教程知识点总结
Oct 19 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 Python
教你怎么用python selenium实现自动化测试
May 27 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的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP线程的内存回收问题
2016/07/08 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
详解numpy的argmax的具体使用
2019/05/27 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
python如何修改文件时间属性
2021/02/05 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
高考自主招生自荐信
2013/10/20 职场文书
关于环保的建议书400字
2014/03/12 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
承诺书范本大全
2015/05/04 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
在职证明书模板
2015/06/15 职场文书