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学习笔记(二)基础语法
Jun 06 Python
Python写的一个简单监控系统
Jun 19 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
Django URL传递参数的方法总结
Aug 28 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
Aug 12 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
Pillow图像处理库安装及使用
Apr 12 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
php5.3 goto函数介绍和示例
2014/03/21 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
javascript的内存管理详解
2013/08/07 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
Node.js学习入门
2017/01/03 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
python网络编程之读取网站根目录实例
2014/09/30 Python
Python实现去除代码前行号的方法
2015/03/10 Python
python常见的格式化输出小结
2016/12/15 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
王老吉广告词
2014/03/20 职场文书
微电影大赛策划方案
2014/06/05 职场文书
仓管员岗位职责
2015/02/03 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python