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 17 Python
在Python的Flask框架下收发电子邮件的教程
Apr 21 Python
在Python中使用mechanize模块模拟浏览器功能
May 05 Python
python WindowsError的错误代码详解
Jul 23 Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
Python list和str互转的实现示例
Nov 16 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对象的串行化与反串行化
2016/01/24 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
Python运算符重载用法实例分析
2015/06/01 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
python散点图实例之随机漫步
2018/08/27 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
python retrying模块的使用方法详解
2019/09/25 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
python可视化text()函数使用详解
2020/02/11 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
公务员职业生涯规划书范文  
2014/01/19 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
资产移交协议书
2016/03/24 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP