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通过floor函数舍弃小数位的方法
Mar 17 Python
python常见排序算法基础教程
Apr 13 Python
用python找出那些被“标记”的照片
Apr 20 Python
tensorflow输出权重值和偏差的方法
Feb 10 Python
Python enumerate函数功能与用法示例
Mar 01 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
python3 map函数和filter函数详解
Aug 26 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
解决python3插入mysql时内容带有引号的问题
Mar 02 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
pyqt5中动画的使用详解
Apr 01 Python
Python3基于print打印带颜色字符串
Jul 06 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+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
Yii框架form表单用法实例
2014/12/04 PHP
php session的应用详细介绍
2017/03/22 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
7个JS基础知识总结
2014/03/05 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
JS实现图片切换效果
2018/11/17 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
Python实现基于权重的随机数2种方法
2015/04/28 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
人事主管的岗位职责
2013/11/16 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
销售类求职信
2014/06/13 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
先进工作者事迹材料
2014/12/23 职场文书