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 08 Python
深入理解Python3中的http.client模块
Mar 29 Python
Python中一些不为人知的基础技巧总结
May 19 Python
Django处理文件上传File Uploads的实例
May 28 Python
Python 给某个文件名添加时间戳的方法
Oct 16 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 Python
Python如何输出警告信息
Jul 30 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
用python写PDF转换器的实现
Oct 29 Python
Python使用protobuf序列化和反序列化的实现
May 19 Python
浅析Python实现DFA算法
Jun 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 事件机制(2)
2011/03/23 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
javascript每日必学之多态
2016/02/23 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
python调用c++传递数组的实例
2019/02/13 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
索桥的故事教学反思
2014/02/06 职场文书
自荐信如何制作?
2014/02/21 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python
sql server 累计求和实现代码
2022/02/28 SQL Server