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中for循环详解
Jan 17 Python
python3实现读取chrome浏览器cookie
Jun 19 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
对python的文件内注释 help注释方法
May 23 Python
python requests使用socks5的例子
Jul 25 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
python实现while循环打印星星的四种形状
Nov 23 Python
Python遍历字典方式就实例详解
Dec 28 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
TensorFlow固化模型的实现操作
May 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
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Python中的并发编程实例
2014/07/07 Python
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
教你学会使用Python正则表达式
2017/09/07 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
Python中GIL的使用详解
2018/10/03 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
酒店副总岗位职责
2013/12/24 职场文书
韩国商务邀请函
2014/01/14 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
项目经理任命书
2014/06/04 职场文书
教师三严三实心得体会
2014/10/11 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python