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代码的打包与发布详解
Jul 30 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
python在非root权限下的安装方法
Jan 23 Python
详解python实现线程安全的单例模式
Mar 05 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
Python逐行读取文件内容的方法总结
Feb 14 Python
tensorflow 实现数据类型转换
Feb 17 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中如何定义和使用常量
2013/02/28 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
php实现用户登陆简单实例
2017/04/04 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
js日期时间补零的小例子
2013/03/05 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Python3 能振兴 Python的原因分析
2014/11/28 Python
python的else子句使用指南
2016/02/27 Python
Django中modelform组件实例用法总结
2020/02/10 Python
django 取消csrf限制的实例
2020/03/13 Python
python3实现简单飞机大战
2020/11/29 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
事务机电主管工作职责
2014/02/25 职场文书
企业文化演讲稿
2014/05/20 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
优秀团队申报材料
2014/12/26 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL