【Python】【进阶篇】27、Django url标签详解

news2024/11/15 15:40:40

目录

  • 27、Django url标签详解
    • 1. url标签基本使用
    • 2. 给定参数的动态url

27、Django url标签详解

在 Django 的模板语言中除了我们前面章节介绍过的 if 标签和 for 标签之外,还有许多我们时常用到标签,比如 url 标签。

1. url标签基本使用

Django 的模板语言为我们提供了 url 标签,url 标签可以避免在模板中使用硬编码的方式插入要访问的 url 地址。

所谓硬编码就是将数据直接嵌入到程序或其他可执行对象的源代码中,比如我们修改了视图的访问地址,如果模板中采用的是硬编码的话,那么也需要对模板中的访问地址 url 进行修改,让它们保持数据的一致,但是这样对于采用 MTV 设计模式的 Django 框架来说是极其不方便的。url 标签就很好的避免了这一点,它的使用语法格式如下:

{% url 'url_name' args1 args2 %}

我们解析一下它的的含义,其中 app_name 代表我们创建的应用的名字此处是 index;url_name 是 url 自定义的别名,可以在配置路由地址时通过 path 的 name 属进行设置。而后面的 args1、args2 参数是用于定义动态的 url 即带有查询的字符串的 url。下面我们通过已经讲过的实例代码对 url 标签进行讲解。

首先我们在 urls.py 文件中 为 url 设置别名,如下所示:

path('Hello_MyWeb/',views.Hello_MyWeb,name='hello')

然后我们在 templates 目录下创建一个名为 test_url 的 html 文件,添加一下代码:

<p><a href="{% url 'hello' %}" >点我看C语言中文网</a></p>

最后我们在 views.py 文件中创建一个 test_url 函数,如下所示:

def test_url(request):
    return render(request,'test.url')

在浏览器地址栏访问 127.0.0.1:8000/test_url/ ,通过点击可以跳转到 Hello_MyWeb 页面。如果你想跳转到其他的页面,只需要将给相应路由配置 name 属性即可,而我们无需做其他的改动。name 参数有非常重要作用,url 的反向解析也是通过它与reverse()函数配合使用实现的。这个知识点后续还会讲到。

提示:url 标签主要用来实现页面之间的跳转,在分布式路由中使用 {% url ‘app_name:url_name’ args1 args2 %}

即应用名:url 别名,在本例中是 index:hello。

2. 给定参数的动态url

如果是带参数的 url 我们要怎么处理它呢?其实通过简单一段代码我们就能够明白,下面我们对前述代码进行改写。首更改 path 路由函数映射关系,如下所示:

path('Hello_MyWeb/<int:id>',views.Hello_MyWeb,name='hello')

改动 Hello_MyWeb 视图函数,为其添加 id 参数,如下所示:

def Hello_MyWeb(request,id):

再把模板中的标签改写成如下格式:

<p><a href="{% url 'hello' 1 %}" >点我看C语言中文网</a></p>

通过访问 127.0.0.1/test_url 地址,可以得到如下显示结果:

在这里插入图片描述

图1:url 标签使用

我们点击上述链接会跳转到 Hello_MyWeb 视图的页面,如下所示:

在这里插入图片描述

图2:url 标签使用

本节讲解了模板语言 url 标签的用法,url 标签有很多的使用场景,比如前端首页导航栏中的各个功能模块的超链接,点击后就会进入详情页,这些在模板中就是使用了 url 标签。url 标签还经常被使用到 url 的反向解析中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/505435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xcode 使用 Instruments 无法找到代码中耗时挂起操作的解决

问题现象 Instruments 是一套非常有用的代码分析和调试利器,我们经常用它来查找 App 中的性能瓶颈。 不过,有时 Instruments 却无法捕获到系统明显挂起或长耗时的方法,这是怎么回事呢? 如上图所示,App 运行中系统(Severe Hang)被挂起长达 3 秒钟,但在 Instruments 竟…

tmux一个终端复用器(terminal multiplexer)

tmux 安装 使用包管理工具 # Ubuntu 或 Debian $ sudo apt-get install tmux# CentOS 或 Fedora $ sudo yum install tmux# Mac $ brew install tmuxsession 会话管理 1. 新建会话 第一个启动的 Tmux 窗口&#xff0c;编号是0&#xff0c;第二个窗口的编号是1&#xff0c;以…

[无线统计设计与国际标准]【chapter 1】[参考信号设计]【DMRS】

前言&#xff1a; 参考信号相关的所有内容都在38.211 中有介绍。 DMRS是用于信道估计&#xff0c;服务于UE信 道解调的。基站将DMRS穿插到各种信道的时频资源里面去&#xff0c;伴随着数据一起发送给UE&#xff1b; 对UE来说&#xff0c;DMRS是一个确…

Java【多线程基础6】定时器 + 模拟实现Timer

文章目录 前言一、定时器1, 什么是定时器2, 如何使用定时器 二、模拟实现定时器1, 初步实现2, 问题改善 总结 前言 &#x1f4d5;各位读者好, 我是小陈, 这是我的个人主页 &#x1f4d7;小陈还在持续努力学习编程, 努力通过博客输出所学知识 &#x1f4d8;如果本篇对你有帮助, …

【设计模式】责任链模式的介绍及其应用

责任链的介绍 责任链模式是一种对象的行为模式。在责任链模式里&#xff0c;很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递&#xff0c;直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&a…

一款非常经典的蓝牙多媒体芯片​RDA5850

RDA5850是一款高度集成的蓝牙无线电收发器和基带处理器&#xff0c;基于低成本的32位XCPU RISC核心&#xff08;其实虽然手册上说是RISC核心&#xff0c;但我怎么感觉这款芯片有点MIPS的影子 &#xff09;具有多媒体能力。此芯片有着丰富的外设&#xff0c;而大多数的功能都是…

找出3个数中的最大值与最小值

设计完整的程序实现以下功能&#xff1a;从键盘上输入3个整数&#xff0c;通过指针运算&#xff0c;找出3个数中的最大值与最小值和它们的地址&#xff0c;并实现最大值与最小值的交换&#xff08;要求用指针作为函数参数处理&#xff09;。 #include <stdio.h>void swap…

onnxruntim的使用方法

onnxruntime是谁发明的&#xff1f; ONNX Runtime 是由微软公司开发和维护的深度学习推理框架。ONNX Runtime 的前身是 Microsoft Cognitive Toolkit (CNTK)&#xff0c;它是微软公司开发的一个深度学习框架&#xff0c;支持多种硬件平台和操作系统&#xff0c;具有高性能和易…

杜甫经典长诗“三吏”“三别”赏析

杜甫简介 杜甫&#xff08;公元712—公元770&#xff09;&#xff0c;原籍湖北襄阳&#xff0c;后徙河南巩县。字子美&#xff0c;自号少陵野老&#xff0c;杜少陵&#xff0c;杜工部等&#xff0c;唐代著名诗人&#xff0c;世称“诗圣”&#xff0c;生活在安史之乱(唐朝由盛转…

时间管理:瞎忙和高效的区别

前言 最近看到一个非常有价值的文章&#xff0c;内容上确实震撼到我了&#xff0c;借鉴过来用于自勉。 人和人的差距为什么这么大&#xff1f; 而且这种差距&#xff0c;并不是家庭背景、权利财富或天赋带来的&#xff0c;仅仅是我们对时间的掌控&#xff0c;人总是错把忙碌…

B860AV2.1-A/M/B_1g/2g-通刷_当贝纯净桌面-线刷固件包

ZTE_B860AV2.1-A&#xff0f;M&#xff0f;B_1g&#xff0f;2g-通刷_当贝纯净桌面-线刷固件包-内有教程及短接点 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&a…

交直流一体化电源系统-交流电源自动测试系统ATECLOUD-Power

现代社会离不开电力&#xff0c;而电力供应的质量和可靠性&#xff0c;对于各个领域的发展都有着至关重要的作用。交直流一体化电源系统作为一种新型的供电方案&#xff0c;不仅具备高度的适应性、可靠稳定性以及节能环保性等诸多优势&#xff0c;还能为各行各业的市场提供更加…

【构造】CF634div3 D. Anti-Sudoku

Problem - D - Codeforces 题意&#xff1a; 给定一个数独&#xff0c;让你更改最多9格&#xff0c;使其变成anti-数独&#xff0c;即每一行&#xff0c;每一列&#xff0c;每一个3*3大格都存在一个数的出现次数>2 思路&#xff1a; 构造题&#xff0c;要不是根据题目隐含…

初识Vue-组件

目录 组件注册 全局注册 局部注册 全局导入 按需载入 Vue组件的生命周期 动态组件 keep-alive【使用的是LRU淘汰算法】 组件注册 全局注册 全局注册的组件可以在任何地方使用 Vue.component("custom-a", {render() {return <div>custom-a</div>…

代码随想录算法训练营day30 | 332. 重新安排行程,51. N 皇后,37. 解数独

代码随想录算法训练营day30 | 332. 重新安排行程&#xff0c;51. N 皇后&#xff0c;37. 解数独&#xff08;难度大&#xff0c;先简单了解&#xff09; 332. 重新安排行程51. N 皇后解法一&#xff1a;回溯 37. 解数独解法一&#xff1a; 总结 332. 重新安排行程 没有视频题解…

乐鑫esp32-c2开发板 烧录演示

一、准备工作 数据线X 1 、 四博智联 ESPC2-12 开发板 X 1 二、环境搭建 1、进入https://code.visualstudio.com 官网下载VSCODE软件 2、安装完成后安装乐鑫插件如下图 3、插件安装完后&#xff0c;查看- 命令面板&#xff08;快捷键CtrlShiftP&#xff09;。 4、输入config…

SpringSecurity 认证流程源码详细解读

一、SpringSecurity 本质探寻 SpringSecurity 的原理其实就是一个过滤器链&#xff0c;内部包含了提供各种功能的过滤器。这样说肯定非常枯燥&#xff0c;所以接下来还是在代码中看一看。 前期工作&#xff0c;需要在代码中引入 SpringSecurity 依赖&#xff0c;这里不再赘述…

服务(第十七篇)mysql的高级语句

mysql 6大常见的约束&#xff1a; 主键约束&#xff1a;primay key 主键字段不允许有重复的记录&#xff0c;不允许为null&#xff0c;一个表只能有一个主键 唯一性约束&#xff1a;unique key 唯一键字段不允许有重复的记录&#xff0c;但允许为null&#xff0c;一…

unordered系列容器的底层——哈希

目录 unordered系列容器的底层结构 哈希概念 哈希冲突 哈希函数 常见哈希函数 哈希冲突解决 闭散列 线性探测 哈希表什么情况下进行扩容&#xff1f;如何扩容&#xff1f; 二次探测 开散列 开散列概念 开散列增容 存储string类型的解决 闭散列的实现 开散列的实…

IS210AEBIH3BEC隔离器用于变压器等高压设备

IS210AEBIH3BEC隔离器用于变压器等高压设备 隔离器可以根据在电力系统中的位置进行分类 母线侧隔离器——隔离器直接连接到主母线线路侧隔离器 - 隔离器将放置在任何馈线的线路侧Transfer bus side isolator – isolator will be directly connected with the transfer bus S…