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 相关文章推荐
Pyramid将models.py文件的内容分布到多个文件的方法
Nov 27 Python
python通过线程实现定时器timer的方法
Mar 16 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 Python
python实现公司年会抽奖程序
Jan 22 Python
django认证系统 Authentication使用详解
Jul 22 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
在python3中实现更新界面
Feb 21 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
django上传文件的三种方式
Apr 29 Python
Python实现随机生成迷宫并自动寻路
Jun 13 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
javascript 学习笔记(onchange等)
2010/11/14 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
Python hashlib模块用法实例分析
2018/06/12 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
通过自学python能找到工作吗
2020/06/21 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
yy婚礼主持词
2014/03/14 职场文书
岗位聘任书范文
2014/03/29 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
Python绘制散乱的点构成的图的方法
2022/04/21 Python