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中的装饰器详解
Apr 13 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
python 中的int()函数怎么用
Oct 17 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
python实现桌面壁纸切换功能
Jan 21 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
Django集成MongoDB实现过程解析
Dec 01 Python
opencv用VS2013调试时用Image Watch插件查看图片
Jul 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP URL路由类实例
2013/11/12 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
php进程间通讯实例分析
2016/07/11 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
次世代生活态度:Hypebeast
2018/07/05 全球购物
竞争上岗演讲稿范文
2014/05/12 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
基层党支部承诺书
2015/04/30 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python