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 相关文章推荐
浅谈Pandas 排序之后索引的问题
Jun 07 Python
Python通用循环的构造方法实例分析
Dec 19 Python
python matplotlib实现双Y轴的实例
Feb 12 Python
Python面向对象之类和实例用法分析
Jun 08 Python
python实现图片中文字分割效果
Jul 22 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
Python存储读取HDF5文件代码解析
Nov 25 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP echo()函数讲解
2019/02/15 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
理解python多线程(python多线程简明教程)
2014/06/09 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
python五子棋游戏的设计与实现
2019/06/18 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
给学校的建议书范文
2014/05/15 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
大学生受助感言
2015/08/01 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
详解MySQL 联合查询优化机制
2021/05/10 MySQL
Python中的datetime包与time包包和模块详情
2022/02/28 Python
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers