Django if标签详解

Django if标签是模板语言中的一种条件判断语句,可以在渲染模板时根据条件的真假来选择性地输出一些内容。它的基本语法是:

{% if condition %}
    ... content ...
{% elif other_condition %}
    ... other content ...
{% else %}
    ... fallback content ...
{% endif %}

其中,{% elif %}{% else %}语句都是可选的。condition是一个表达式,可以是变量、数字、字符串等,也可以是比较表达式、逻辑表达式等。如果condition为真,则输出... content ...;否则根据情况输出... other content ...... fallback content ...

以下是一些常见的用法示例:

输出变量

{% if article.published %}
    <p>{{ article.body }}</p>
{% endif %}

如果article.published为真,就输出文章的正文;否则不输出。

比较表达式

{% if article.length < 500 %}
    <p>这是一篇短文章</p>
{% elif article.length < 1000 %}
    <p>这是一篇中等长度的文章</p>
{% else %}
    <p>这是一篇长文章</p>
{% endif %}

根据文章长度分别输出不同的内容。

逻辑表达式

{% if user.is_authenticated and user.is_staff %}
    <a href="/admin/">进入后台管理</a>
{% else %}
    <a href="/login/">请登录</a>
{% endif %}

如果用户已经登录且是管理员,则输出一个链接到后台管理界面的链接;否则输出一个链接到登录界面的链接。

特殊变量

if标签还提供了一些特殊的变量,可以用于访问当前环境中的一些变量和设置:

  • {{ forloop.counter }}:当前循环迭代的次数(从1开始);
  • {{ forloop.counter0 }}:当前循环迭代的次数(从0开始);
  • {{ forloop.revcounter }}:当前循环迭代的次数(从最后一次迭代开始,递减);
  • {{ forloop.revcounter0 }}:当前循环迭代的次数(从最后一次迭代开始,递减,从0开始);
  • {{ forloop.first }}:当前循环是否为第一次迭代;
  • {{ forloop.last }}:当前循环是否为最后一次迭代。

以下是一个示例,演示如何在模板中输出一个有序列表:

<ol>
{% for item in items %}
    {% if forloop.first %}
        <li class="first">{{ item }}</li>
    {% elif forloop.last %}
        <li class="last">{{ item }}</li>
    {% else %}
        <li>{{ item }}</li>
    {% endif %}
{% endfor %}
</ol>

在这个模板中,如果当前是第一次迭代,则给列表项添加class="first"属性;如果当前是最后一次迭代,则给列表项添加class="last"属性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django if标签详解 - Python技术站

(0)
上一篇 2023年3月12日
下一篇 2023年3月12日

相关文章

  • Python – Django – 模板语言之变量

    在 Django 模板语言中变量用 {{ }},逻辑用 {% %} 在 urls.py 中添加对应关系 from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r’^test/’, views.d…

    Django 2023年4月10日
    00
  • django前后分离-restful

    REST是所有Web应用都应该遵守的架构设计指导原则。 Representational State Transfer,翻译是”表现层状态转化”。 REST核心: 资源, 状态转移, 统一接口 资源: 是REST最明显的特征,是指对某类信息实体的抽象,资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。 状态转移: 是指客户端痛…

    Django 2023年4月10日
    00
  • python3.6+django2.0开发一套学员管理系统

    下面是“python3.6+django2.0开发一套学员管理系统”的完整攻略。 1.环境准备 首先需要在本地安装Python3.6,并且安装Django2.0以及其他必要的扩展库,如Pillow,Django-crispy-forms等。可以通过以下命令完成环境准备: # 安装Python3.6 $ sudo apt-get install python3…

    Django 2023年5月16日
    00
  • django与python版本对应关系 附加djangorestframework框架

    Django与python版本 Django 1.11版本兼容Python 2.7、3.4、3.5、3.6、3.7(added in 1.11.17)# 1.11.5 python<=3.6 Django 2.0版本兼容Python 3.4、3.5、3.6、3.7 Django 2.1、2.2版本兼容Python 3.5、3.6、3.7 Django …

    Django 2023年4月13日
    00
  • Django笔记十五之in查询及date日期相关过滤操作

    这一篇介绍关于范围,日期的筛选 in range date year week weekday quarter hour 1、in in 对应于 MySQL 中的 in 操作,可以接受数组、元组等类型数据作为参数: Blog.objects.filter(id__in=[1,2,3]) 对应的 SQL 是: select * from blog_blog w…

    2023年4月10日
    00
  • Django 生命周期

    Django 生命周期为: 用户请求发起对url的请求→ wsgiref模块→django中间件→django(视图url对应函数,模型数据库交互,html模版渲染)→django中间件 → wsgiref模块 →用户看到的页面。   from wsgiref.simple_server import make_server def RunServer(en…

    Django 2023年4月11日
    00
  • django2.0 报错 does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.

      raise ImproperlyConfigured(msg.format(name=self.urlconf_name)) django.core.exceptions.ImproperlyConfigured: The included URLconf ‘<module ‘users.urls’ from ‘D:\\mygitfile\\mei…

    Django 2023年4月9日
    00
  • Django REST Framework教程:快速入门

    我们将创建一个简单的允许管理员用户查看和编辑系统中的用户和组的API。 项目设置 利用pycharm创建一个名为 tutorial 的新django项目,并创建一个名为 quickstart 的新app。   目录结构        在创建的虚拟环境中安装Django REST framework pip install djangorestframewor…

    Django 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部