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实现一个Git日志统计分析的小工具
Dec 14 Python
python使用tensorflow保存、加载和使用模型的方法
Jan 31 Python
简单实现python数独游戏
Mar 30 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
基于Python函数和变量名解析
Jul 19 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
keras 获取某层的输入/输出 tensor 尺寸操作
Jun 10 Python
Python如何定义接口和抽象类
Jul 28 Python
Python中pass的作用与使用教程
Nov 13 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 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
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
JavaScript 事件记录使用说明
2009/10/20 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
Django之模板层的实现代码
2019/09/09 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Django之form组件自动校验数据实现
2020/01/14 Python
python3将变量输入的简单实例
2020/08/19 Python
python tqdm库的使用
2020/11/30 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
店面销售职位的职责
2014/03/09 职场文书
班委竞选演讲稿
2014/04/28 职场文书
护士节活动总结
2014/08/29 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
变长双向rnn的正确使用姿势教学
2021/05/31 Python
table不让td文字溢出操作方法
2022/12/24 HTML / CSS