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使用asyncio包处理并发详解
Sep 09 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
python Crypto模块的安装与使用方法
Dec 21 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
Python库skimage绘制二值图像代码实例
Apr 10 Python
python爬虫容易学吗
Jun 02 Python
浅析Python打包时包含静态文件处理方法
Jan 15 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 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开发大型项目的一点经验
2006/10/09 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
python抓取网页中的图片示例
2014/02/28 Python
Python 中 Meta Classes详解
2016/02/13 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
python实现简易通讯录修改版
2018/03/13 Python
浅谈Python中的bs4基础
2018/10/21 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python 调试冷知识(小结)
2019/11/11 Python
python列表推导式入门学习解析
2019/12/02 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
中小学生学籍证明
2014/10/25 职场文书
个人委托书范文
2015/01/28 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android