Django(2)模板、标签(三)

简介: Django(2)模板、标签(三)

- if/else标签


  • if/else基本语法格式:


{% if condition %}
     ... display
{% endif %}
{% if condition1 %}
   ... display 1
{% elif condition2 %}
   ... display 2
{% else %}
   ... display 3
{% endif %}


  • 可以根据条件判断是否输出,并且if/else支持嵌套
  • {% if %}标签接收andornot等关键字对多个变量进行判断,这点和python基础的流程控制是一样的
  • 下面来看案例:


  • 修改index_test.py视图文件


#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = 95
    return render(request,"test.html",{"test":test_view})
  • 修改test.py文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
{%if test > 90 and test <= 100 %}
优秀
{% elif test > 60 and test <= 90 %}
合格
{% else %}
一边玩去~
{% endif %}
</body>
</html>
  • 访问页面


9036bc6d78e94566bff9ad2c702c0a9d.png

- for标签


  • {% for %} 允许我们在一个序列上迭代,与Python中的for循环类似,每一次循环中,模板系统会渲染在{% for %}{% endfor %}之间的所有内容
  • 下面来看案例:


  • 修改index_test.py视图文件
#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = ["aaa","bbb","ccc","ddd","eee"]
    return render(request,"test.html",{"test":test_view})
  • 修改test.py文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
{% for i in test %}
{{ i }}
{% endfor %}
</body>
</html>
  • 访问页面


8d567e06ea1746e7b7d9da19260c0a5c.png


  • 给标签增加一个reversed可以使列表被反向迭代:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
{% for i in test reversed %}   #添加reversed
{{ i }}
{% endfor %}
</body>
</html>


  • 访问页面


3a719b7c593f42a08e25e4835bfadbd1.png

for循环也可以遍历字典,使用.items方法,用变量的解包分别获取键和值,下面来修改index_test.py文件

#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = {"name":"测试","age":22}}
    return render(request,"test.html",{"test":test_view})

修改test.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
{% for i,j in test.items %}
{{ i }}:{{ j }}
{% endfor %}
</body>
</html>


  • 访问页面



2cb1e079b8754f63aaeb15dad8e36425.png

在{% for %}标签中,可以通过{{forloop}}变量获取循环序号

'forloop.counter':顺序获取循环序号,从 1 开始计算
'forloop.counter0':顺序获取循环序号,从 0 开始计算
'forloop.revcounter':倒序获取循环序号,结尾序号为 1
'forloop.revcounter0':倒序获取循环序号,结尾序号为 0
'forloop.first(一般配合if标签使用)':第一条数据返回 True,其他数据返回 False
'forloop.last(一般配合if标签使用)':最后一条数据返回 True,其他数据返回 False

下面修改文件:

- index_test.py
#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = ["a","b","c","d","e"]
    return render(request,"test.html",{"test":test_view})
- test.html#依次使用forloop变量
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
{% for i in test %}
{{ forloop.counter }}
{{ forloop.counter0 }}
{{ forloop.revcounter }}
{{ forloop.revcounter0 }}
{{ forloop.first }}
{{ forloop.last }}
{% endfor %}
</body>
</html>

{{ forloop.counter }}


15f4f1294e1a48a7afe9ef5609cbf187.png

{{ forloop.counter0 }}


20966730b3604ea9b516c69868108e57.png


{{ forloop.revcounter }}


42e448930bcd40a1971f3e8e1434d7bd.png


{{ forloop.revcounter0 }}


09c68eedf8054679af5e5a28c0fc52f8.png





{{ forloop.first }}


eae76e8631344565a9c785a0a2f51c32.png



{{ forloop.last }}



01c48ed5eace4ed898af5ac742ae38f2.png

{% empty %}可选从句,在循环为空时执行,也就是in后面的参数布尔值为False时,下面修改文件

- index_test.py
#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = []  #设置列表为空
    return render(request,"test.html",{"test":test_view})
- test.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
{% for i in test %}
{{ forloop.counter0 }}
{% empty %}
{% endfor %}
</body>
</html>

访问页面


8047f11ae5fc452fb5d067a90e69b469.png


- ifequal/ifnotequal标签


  • {% ifequal %}标签可以比较两个值,当比较结果相等时,会显示在{% ifequal %}{% endifequal %}之中所有的值,下面来看案例:


#对比两个模板变量
{% ifequal {{ user }} {{ currentuser }} %}
    <h1>Welcome!</h1>
{% endifequal %}


  • 和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签:
{% ifequal section 'sitenews' %}
    <h1>Site News</h1>
{% else %}
    <h1>No News Here</h1>
{% endifequal %}


目录
相关文章
|
5月前
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
58 0
|
7天前
|
Java C++ Python
django 模板 过滤器
django 模板 过滤器
|
2月前
|
前端开发 JavaScript 数据库
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
|
2月前
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
14 1
|
2月前
|
前端开发 Python
Django模板
【8月更文挑战第19天】
28 3
|
2月前
|
自然语言处理 前端开发 数据处理
Django的模板系统
【8月更文挑战第13天】
25 2
|
2月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
62 0
|
2月前
|
前端开发 数据处理 开发者
解锁Django模板系统终极奥义!揭秘高效前端渲染秘籍,让你的网站秒变炫酷黑科技!
【8月更文挑战第31天】Django作为Python的高级Web框架,内置的模板系统支持动态HTML渲染。本文通过在线书店案例,详细介绍Django模板系统的设置与高效渲染技巧,包括创建模板文件、编写视图函数及URL配置。通过合理使用过滤器、深度查询和模板继承等技巧,提升前端渲染效率和安全性,优化Web应用开发流程。
14 0
|
2月前
|
安全 JavaScript 前端开发
Django入门到放弃之模板及标签
Django入门到放弃之模板及标签
|
4月前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用合集之基于django应用模板创建的FC,如何配置数据库
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。