Django web框架使用url path name详解


Posted in Python onApril 29, 2019

quicktool/view.py文件修改视图函数index(),渲染一个home.html模板

from django.shortcuts import render
def index(request):
  return render(request, 'home.html')

quicktool(应用app)下创建一个templates文件夹(模板),在templates下创建一个home.html

<!DOCTYPE html>
<html>
<head>
  <title>学习Django</title>
</head>
<body>

<a href="/add2/4/5/" rel="external nofollow" rel="external nofollow" >计算 4+5</a>

</body>
</html>

mytestsite/urls.py文件将视图函数index()对应的网址取名name为home(只要这个名字不变,网址变了也能通过名字获取到)

urlpatterns = [
  path('admin/', admin.site.urls),
  path('', quicktool_views.index, name='home'), # 新增name值
  path('add/', quicktool_views.add, name='add'), # 新增
  path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),  # 新增
]

运行开发服务器,访问http://127.0.0.1:8000/,可以看到

Django web框架使用url path name详解

点击标签a会执行脚本进行计算,但是home.html中代码a标签的url是"写死"的,我们可以通过url的name传参,home.html增加以下代码

#不带参数的:
#{% url 'name' %}
#带参数的:参数可以是变量名
#{% url 'name' 参数 %}

<a href="/add2/4/5/" rel="external nofollow" rel="external nofollow" >计算 4+5</a>
<a href="{% url 'add2' 70 80 %}" rel="external nofollow" >计算 70+80</a>  # 新增

运行开发服务器,访问http://127.0.0.1:8000/,可以看到

Django web框架使用url path name详解

点击第一个a标签跳转请求的url为http://127.0.0.1:8000/add2/4/5/

点击第二个a标签跳转请求的url为http://127.0.0.1:8000/add2/70/80/

第二个a标签的写法是根据url name 值传参进行跳转,即根据mytestsite/urls.py文件的url path()的属性值name匹配,再传相应的参数值,进行"不写死"请求。

在url path()的属性值name不修改的前提下,修改url path()的第一个路径参数,那么a标签获取的网址也会动态相应变化。

比如

path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),

改成

path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),

除此,还需要写一个跳转到新地址的函数,Django并不会自动更新跳转地址

例如旧的地址收藏夹为/add2/4/5/,访问时就会自动跳转到新的/new_add2/4/5/

具体操作是,在quicktool/view.py文件写一个跳转函数

from django.shortcuts import render
from django.http import HttpResponseRedirect
def old_add2_redirect(request, a, b):
  return HttpResponseRedirect(
    reverse('add2', args=(a, b))
  )

mytestsite/urls.py文件新增url

path('new_add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'), # 新地址
path('add2/<int:a>/<int:b>/', quicktool_views.old_add2_redirect),  # 旧地址

访问http://127.0.0.1:8000/,刷新后,可以看到

Django web框架使用url path name详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学Python之入门(二)基本数据类型
May 25 Python
python的keyword模块用法实例分析
Jun 30 Python
django定期执行任务(实例讲解)
Nov 03 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
分析python请求数据
Aug 19 Python
pandas把所有大于0的数设置为1的方法
Jan 26 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
通过实例学习Python Excel操作
Jan 06 Python
python自动下载图片的方法示例
Mar 25 Python
python用Configobj模块读取配置文件
Sep 26 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
Apr 26 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 #Python
Django使用redis缓存服务器的实现代码示例
Apr 28 #Python
django的settings中设置中文支持的实现
Apr 28 #Python
Django数据库类库MySQLdb使用详解
Apr 28 #Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 #Python
​如何愉快地迁移到 Python 3
Apr 28 #Python
python学习开发mock接口
Apr 28 #Python
You might like
php获取QQ头像并显示的方法
2014/12/23 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
php中序列化与反序列化详解
2017/02/13 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
javascript定时保存表单数据的代码
2011/03/17 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python魔术方法详解
2015/02/14 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python包的导入方式总结
2021/03/02 Python
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
大学生活感想
2015/08/10 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
导游词之襄阳古城
2019/09/27 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
浅谈Redis的事件驱动模型
2022/05/30 Redis