【Python】【进阶篇】24、Django if标签详解

news2024/9/24 5:30:30

目录

  • 24、Django if标签详解
    • 1. 模板标签
        • 1) 判断逻辑的 if 标签

24、Django if标签详解

本节继续讲解 Django 的模板语言,Django 内置了许多标签用于简化模板的开发过程,同时 Django 也支持自定义标签,这极大的方便了 Web开发者,下面我们依次进行介绍。

1. 模板标签

Django 的模板系统对标签的解释是在渲染的过程中提供相应的逻辑,比如Python 语言中 if…else 语句、with 语句、以及 for
循环等,这些在 Django 的模板系统中都有对应的标签,不过稍微复杂些,它们的使用方式如下所示:

{% tag %}

不过有些标签需要开始标签和结束标签,也有的标签不需要,下面我们对这两种类型的常见标签进行讲解。

1) 判断逻辑的 if 标签

我们知道 if 在 Python 语言中是判断条年是否成立的,在模板标签中它们作用是类似的,如果条件成立则显示块中的内容。模板标签规定了 if 需要与
endif 成对出现 ,使用的方式如下所示:

{% if 条件表达式1 %}  
......  
{% elif 条件表达式2 %}  
......  
{% elif 条件表达式3 %}  
......  
{% else %}  
......  
{% endif %}

上面的 if 示例中就是使用了开始标签和结束标签,它们分别写在了开始位置和结束位置。

注意:模板标签内部的两边空格不要省略。

那 if 标签具体又是如何使用的呢,下面我们通过一个简单的例子来看一下:

#在views.py 中添加如下代码
def test_if(request):
    dic={'x':2**4}
    return render(request,'test_if.html',dic)

在 templates 目录中创建 test_if.html 文件 ,并在body中添加以下代码

{% if x > 0 %}
<h2>{{ x }}是大于0</h2>
{% elif x == 0%}
<h3>{{ x }}是等于0</h3>
{%elif x < 0 %}
<h4>{{ x }}是小于0</h4>
{% endif %}

最后在 urls.py 文件中配置路由如下所示:

path('test_if/',views.test_if)

最终结果可想而知,通过访问 127.0.0.1:8000/test_if 会得到如下显示:

在这里插入图片描述

图1:模板标签 if 运行效果图

从上面例子还可以看出,在 if 标签中可以使用算术操作符,如 >、<、==、<= 等符号,同时也可以使用逻辑运算符 and、or 来连接多个条件,以及使用not 对当前条件取反。

提示:elif 和 else 这两个标签是可选的,elif 标签可以不止一个,但是 else 标签只有一个,同时也可以都不出现在 if 标签中,只使用 if
与 endif。

如果当判断的条件太多时,为了避免过多的连接操作符的出现,同样可以考虑使用嵌套的 if 标签,格式如下所示:

{% if 条件表达式1 %}
       {% if 条件表达式 %}
       ......
      {% elif 条件表达式2 %}

       ......
      {% else %}
       ......
      {% endif %}
{% endif %}

在这里我们介绍另外一种方式来简单的演示如何使用嵌套 if 标签,在 views.py 文件中添加如下代码:

from django.template import Template,Context#调用template、以及上下文处理器方法
def Hello_MyWeb(request):
        #调用template()方法生成模板
        t=Template("""
                        {% if web.name == 'C语言中文网' %}
                                {% if printable %}
                                        <h1>Hello C语言中文网</h1>
                                {% else %}
                                        <h2>欢迎您下次访问,C语言中文网</h2>
                                {% endif %}
                        {% endif %}
                                        """)
        c= Context({'web':{'name':'C语言中文网'}, 'printable' : True }) #Context必须是字典类型的对象,用来给模板传递数据
        html=t.render(c)
        return HttpResponse(html)

然后我们在 urls.py 文件中为 hello_MyWeb() 函数配置路由映射关系,如下所示:

path('Hello_MyWeb/',views.Hello_MyWeb)

最终我们会得到如下所示的输出:

在这里插入图片描述

图1:if 标签嵌套使用

当我们将 printable 的值改为 False 的时候,则会得到如下输出:

在这里插入图片描述

图2:if 标签嵌套使用

本节给大家详细的讲解了 Django 模板标签中的 if 标签的使用方法。在学习的过程一定要懂得融会贯通 ,因为 Django 是基于 Python 的 Web 框架,它纵然有自己的特点,但是万变不离其宗,所以学会结合 Python 语言去学习会有利我们快速理解与掌握相关的知识。

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

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

相关文章

拓展系统变量

文章目录 拓展系统变量 使用方式拓展系统变量获取服务端IP - $ZSERVERIP获取客户端IP - $ZCLIENTIP获取最大许可数量 - $ZMAXLICENSE获取当前系统名称 - $ZOSNAME获取字符串最大长度 - $ZMAXSTRINGLEN获取当前登录用户ID - $ZUSERID获取当前登录用户名 - $ZUSERNAME系统最近错误…

【Linux从入门到精通】C语言模拟实现进度条小程序

在Linux下&#xff0c;我们安装软件时会经常看到进度条&#xff0c;来告知我们安装的进度。我们不妨自己模拟实现一个进度条&#xff0c;看看其中的细节。模拟实现进度条并不困难&#xff0c;但其中的细节我们又不可忽视。本篇文章会对模拟实现进度条进行详解。 文章目录 一、进…

顺序表(数据结构)---排队啦!

目录 前言&#xff1a; 1.线性表的性质 2.静态数组or动态数组 2.1静态数组 2.2动态数组 3.结构体的创建 4*接口函数的详细讲解 4.1初始化结构体 4.2尾插 4.3打印数据 4.4用完后销毁创建的堆空间 4.5 尾删 4.6头插 4.7头删 4.8查找 4.9任意位置插入 4.10任意位…

springboot+jsp商务安全邮箱(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot商务安全邮箱。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&…

谈谈Edge浏览器新出的分屏功能

谈谈Edge浏览器新出的分屏功能 前言 在 2023 年三月份微软为 Microsoft Edge 浏览器的稳定版本带来了一个新功能 —— 分屏浏览 (Split Screen)&#xff0c;此功能允许用户在当前页面以左右视图的形式并排打开两个标签页面&#xff0c;作用上类似于应用的分屏可以让浏览器同时处…

Kali Linux部署qemu虚拟化启动img镜像文件

一、先下载最新版本的Kali环境 Kali Linux官网下载网址&#xff1a;Get Kali | Kali Linux 安装到VMware里面后&#xff0c;调整内存大小为4G&#xff08;如果自己电脑内存32G的话&#xff0c;可以调整为8G&#xff09; 更新一下Kali Linux源 然后安装如下软件 apt install qe…

二十九、交换机堆叠与集群

文章目录 堆叠技术概述一、可靠组网二、堆叠技术名称三、华为堆叠原理1、基本概念2、堆叠端口&#xff1a;&#xff08;逻辑端口&#xff09;3、堆叠拓扑类型4、堆叠硬件要求 四、堆叠配置示例&#xff08;华三模拟器&#xff09;1、sw1&#xff1a;2、sw2&#xff1a;3、激活i…

弹射起步——pythonweb开发Flask框架,前端原生+Flask后端框架+mysql数据库实战(附带小案例)

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

HCT:深度是我们没有的奢侈品

文章目录 Deep is a Luxury We Don’t Have摘要本文方法Efficient AttentionThe HCT Architecture Deep is a Luxury We Don’t Have 摘要 医学图像具有高分辨率。高分辨率对于早期发现恶性组织至关重要。然而&#xff0c;这一解决方案在建模长期依赖性方面提出了挑战。浅层t…

接口自动化测试的神器:使用Python编写高效的自动化测试工具

B站首推&#xff01;2023最详细自动化测试合集&#xff0c;小白皆可掌握&#xff0c;让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 摘要&#xff1a; 安装工具&#xff1a; 测试脚本 编写python脚本 1.使用requests发送HTTP请求 2.使用py…

生产环境出现CPU占用过高,请谈谈你的分析思路和定位

假如生产环境出现CPU占用过高&#xff0c;请谈谈你的分析思路和定位 记一次印象深刻的故障&#xff1f; 结合Linux 和 JDK命令一起分析&#xff0c;步骤如下 使用top命令找出CPU占比最高的 ps -ef 或者 jps 进一步定位&#xff0c;得知是一个怎么样的后台程序出的问题 定位…

夏驰和徐策的解决数学问题思路——反证法

反证法是一种证明方法&#xff0c;它的基本思路是通过假设某个结论不成立&#xff0c;然后构造出一个矛盾的情况来推导出原先假设的结论是成立的。 具体来说&#xff0c;反证法一般包含以下步骤&#xff1a; 1. 假设所要证明的命题不成立。 2. 通过这个假设&#xff0c;构造…

网易云音乐开发--个人中心页效果实现

内网穿透 就是我们真机调试&#xff0c;是没有数据的 就是我们手机上去访问我们电脑上自己搭的服务器&#xff0c;肯定是访问不到的 此时就需要我们内网穿透 1.winR 输入 cmd 输入ipconfig 2.找到无线局域网适配器的IPv4 3.重新设置一个新的地址&#xff0c;只需将host中…

Snipaste介绍、安装、使用技巧(截图贴图工具)

一、简介 Snipaste 是一个简单但强大的截图贴图工具&#xff0c;也可以让你将截图贴回到屏幕上&#xff01;下载并打开 Snipaste&#xff0c;按下 F1 来开始截图&#xff0c;再按 F3&#xff0c;截图就在桌面置顶显示了。就这么简单&#xff01; 你还可以将剪贴板里的文字…

HTMLCxx 编译说明

1、编译库 下载htmlcxx之后&#xff0c;打开项目编译工程&#xff1a; 双击编译之后&#xff0c;会出现错误&#xff1a; 此时&#xff0c;双击定位到错误的位置&#xff1a; 去掉双引号&#xff0c;重新输入 "",编译通过 2、引用库解析数据 这时候会定位到当前的错…

双目测距--3 双目标定

目录 -1 流程说明&#xff1a; 0 几个重要 函数 1、calibrateCamera()函数 2、stereoCalibrate() 3、findChessboardCorners() 棋盘格角点检测 4、stereoRectify() 5、initUndistortRectifyMap() 6、remap() 1、用于标定的图像 2、标定前 3、OpenCV进行双目标定 单…

《基于多尺度特征提取的少样本脉搏波形轮廓分类》阅读笔记

目录 一、论文摘要 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课…

【c++】——string类

&#x1f331;码云&#xff1a;一条咸鱼 目录 &#x1f349;string类简介&#x1f349;string类的常用接口说明&#x1f353;string类对象常见构造函数&#x1f353;string类对象常见容量操作函数&#x1f353;string类对象访问及遍历操作函数&#x1f353;string类对象修改操作…

基于springboot的4S店车辆管理系统(源码等)

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

【面试系列】详细拆解Java、Spring、Dubbo三者SPI机制的原理

什么是SPI SPI全称为Service Provider Interface&#xff0c;是一种动态替换发现的机制&#xff0c;一种解耦非常优秀的思想&#xff0c;SPI可以很灵活的让接口和实现分离&#xff0c;让api提供者只提供接口&#xff0c;第三方来实现&#xff0c;然后可以使用配置文件的方式来…