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

这篇具有很好参考价值的文章主要介绍了【Python】【进阶篇】24、Django 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 会得到如下显示:

【Python】【进阶篇】24、Django 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)

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

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

图1:if 标签嵌套使用

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

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

图2:if 标签嵌套使用

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

到了这里,关于【Python】【进阶篇】24、Django if标签详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】【进阶篇】14、Django创建第一个项目

    在上一章中,我们完成了开发环境的搭建工作。 本章我们将学习如何创建 Django 项目以及 Django 项目的初始化,我们将创建一个名为 BookStore 的 Django 项目,用此项目来讲解 Django 框架的部分知识,通过这个项目我们将一起打开 Django 世界的大门。 1) BookStore项目创建 我们创建一

    2024年02月02日
    浏览(39)
  • Python学习笔记_进阶篇(三)_django知识(二)

    本章内容 Django model django默认支持sqlite,mysql, oracle,postgresql数据库。 1 sqlite django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 引擎名称:django.db.backends.sqlite3 2mysql 引擎名称:django.db.backends.mysql 1、配置文件中sqlite 2、配置文件中mysql 注:由于Django内部连接MySQL时使用的

    2024年02月12日
    浏览(29)
  • Python学习笔记_进阶篇(四)_django知识(三)

    本章内容: Django 发送邮件 Django cookie Django session Django CSRF 我们常常会用到一些发送邮件的功能,比如有人提交了应聘的表单,可以向HR的邮箱发邮件,这样,HR不看网站就可以知道有人在网站上提交了应聘信息。今天我们尝试用django发送邮件做尝试 1、配置相关参数settings 往

    2024年02月11日
    浏览(30)
  • Python学习笔记_进阶篇(二)_django知识(一)

    本章简介: Django 简介 Django 基本配置 Django url Django view Django 模板语言 Django Form Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于

    2024年02月12日
    浏览(36)
  • 【Python】【进阶篇】34、Django Meta元数据类属性解析

    Model 是 Django ORM 的核心,它有许多特性,比如我们提到过的模型类继承,还有未讲到过的的元数据。每个 Model 都是一个 Python 类,且通常会包含四个部分,它们分别如下: 继承自 django.db.model.Model; Model 元数据声明; Filed类型字段; 魔术方法__str__ 除了元数据以外,其他三个

    2024年02月04日
    浏览(40)
  • Mybatis中where标签和if标签结合使用说明

    由于不小心将 and 或者 or 写在了语句后面,导致mybatis无法自主判别,这种问题在新上手的同学中很是常见。下面我们探讨一下,在哪些情况下Mybatis无法判断动态SQL语句中的 and 或者 or 。 select筛选出视图对象的参数,用于给前端返回页面参数使用。 以下代码格式是正确,我们

    2023年04月08日
    浏览(28)
  • mybatis <if>标签判断“0“不生效

    原if标签写法 这种情况不生效,原因是mybatis是用OGNL表达式来解析的,在OGNL的表达式中,\\\'0’会被解析成字符(而我传入的type却是string),java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。  解决方法 参考地址:mybatis <if>标签判断不生效_通域的博客

    2024年02月10日
    浏览(28)
  • 使用动态sql时,if标签不起作用

    目录 场景: 问题分析: 问题解决: 简单讲一下应用场景 我拿到一个项目,完成后端数据处理,在进行可选条件查询时,使用动态sql  在mapper.xml中我先是这么写的  然后,就出现if标签失效的情况,关键是它有时候也会返回到前端数据,给我都搞蒙了 反复查看,加上网搜索

    2024年01月23日
    浏览(30)
  • 「问题」如何解决 MyBatis 中的 if 标签无法识别参数为 0 的问题

    mybatis中的自己写的判断方法,若参数 buildingType=0 ,则不会进入到方法中 mybatis源码如下所示: 代码解释: 这是一个将字符串转换为 double 类型的操作。代码中使用了三元运算符 ?: 来判断字符串的长度是否为 0。如果字符串为空,则返回 0.0D(double 类型的零值),否则使用

    2024年02月15日
    浏览(31)
  • 仓储24代电子标签接口文档

    通过手动触发电子标签注册到系统,注册成功就可以进行功能测试。 仓储24代注册 注册成功显示rssi:-xxdB如下: 绝对值越小信号越差,一般0 ~ -75dB都可以正常通讯 接口描述 查询注册到系统的电子标签的信息。 接口信息 接口地址:192.168.1.200/wms/associate/queryTagsInRouterId 请求类型

    2024年02月09日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包