标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中。

一些标签需要开始和结束标签 (例如:{% tag %} ...标签 内容 ... {% endtag %}),有些标签不需要结束{% tag %}

快捷键:输入tag直接回车

常用模板标签:for if with  [csrf_token  extends   include  block url load]见后续页面

for标签:循环遍历可迭代变量中的每一个元素,没有break和continue等复杂功能,相关操作类比python。

(1)遍历列表:

tagtest.html模板:

{% for name in name_list %}

<li>{{ name }}</li>

{% endfor %}

反向遍历:

{% for name in name_list reversed %}

<li>{{ name }}</li>

{% endfor %}

views.py视图:

def tagtest(request):

list=["zhang","wang","li"]

return render(request,"tagtest.html",{"name_list":list})

渲染结果:

  

(2)列表中字典取值:

tagtest.html模板:

{% for info_dic in name_list %}

<li>{{ info_dic.name }}</li>

{% endfor %}

views.py视图:

def tagtest(request):

list=[{"name":"le"},{"name":"yang"},{"name":"he"}]

return render(request,"tagtest.html",{"name_list":list})

渲染结果:

            

      (3)遍历字典:

tagtest.html模板:

{% for k,v in info_dict.items %}

<li>{{ k }}:{{ v }}</li>

{% endfor %}

views.py视图:

def tagtest(request):

dic={"name":"yang","age":20,"sex":"male"}

return  render(request,"tagtest.html",{"info_dict":dic})

渲染结果:

            

      (4)for…empty…:for遍历一个空的变量或者未找到时执行empty

  tagtest.html模板:

   {% for info_dic in name_list %}

   <li>{{ info_dic.name }}</li>

  {% empty %}

   <p>给出的变量为空或者未找到!</p>

  {% endfor %}

  views.py视图:

  def tagtest(request):

      list=[]

      return render(request,"tagtest.html",{"name_list":list})

  渲染结果:

            

        5)forloop使用案例:

tagtest.html模板:

{% for i in %}

<li>{{ forloop }}---{{ i }}</li>

{% endfor %}

配合属性使用:

{% for i in %}

<li>{{ forloop.counter }}---{{ i }}</li>

{% endfor %}

views.py视图:

def tagtest(request):

li=["python","mysql","web"]

return render(request,"tagtest.html",{"l":li})

           渲染结果:

         

注:循环序号可以通过{{forloop}}显示,必须在循环内部用:

forloop.counter

当前循环的索引值(从1开始),forloop是循环器,通过点来使用功能

forloop.counter0

当前循环的索引值(从0开始)

forloop.revcounter

当前循环的倒序索引值(从1开始)

forloop.revcounter0

当前循环的倒序索引值(从0开始)

forloop.first

当前循环是不是第一次循环(布尔值)

forloop.last

当前循环是不是最后一次循环(布尔值)

forloop.parentloop

本层循环的外层循环的对象,再通过上面的几个属性来显示外层循环的计数等

if标签:判断变量的逻辑值是进行选择性的输出,类比python(<  > = <= >= !=  ==  and or not not in is is not前后必须要有空格)

tagtest.html模板:

{% if num > 100 %}

<h1>大于100</h1>

{% elif num < 100 %}

<h1>小于100</h1>

{% else %}

<h1>等于100</h1>

{% endif %}

views.py视图:

def tagtest(request):

n=100

return render(request,"tagtest.html",{"num":n})

渲染结果:

          

with标签:多用于给一个复杂的变量起别名

注意:等号左右不要加空格。

{% with total=business.employees.count %}

{{ total }} <!--只能在with语句体内用-->

{% endwith %}

{% with business.employees.count as total %}

{{ total }}

{% endwith %}

Django模板之模板标签的更多相关文章

  1. python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器

    python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 1. 创建一个 zqxt_tm ...

  2. django模板 内建标签

    autoescape 控制当前自动转义的行为,有on和off两个选项 {% autoescape on %} {{ body }} {% endautoescape %} block 定义一个子模板可 ...

  3. 测试开发之Django——No6.Django模板中的标签语言

    模板中的标签语言 1.if/else {% if  %} 标签检查(evaluate)一个变量,如果这个变量为真(即:变量存在,非空,不是布尔值假),系统会显示在{% if  %} 和 {% endi ...

  4. 11:django 模板 内建标签

    django 内建标签 autoescape 控制当前自动转义的行为,有on和off两个选项 {% autoescape on %} {{ body }} {% endautoescape %} bl ...

  5. Django内置模板标签

    Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...

  6. Django框架之【自定义模板过滤器与标签】

    本文在我的微信公众号的链接:https://mp.weixin.qq.com/s?__biz=MzU5NTU5MjcwNw==&mid=2247483674&idx=1&sn= ...

  7. Django项目中模板标签及模板的继承与引用【网站中快速布置广告】

    Django项目中模板标签及模板的继承与引用 常见模板标签 {% static %} {% for x in range(x) %}{% endfor %} 循环的序号{% forloop %} 循环 ...

  8. Django模板语言,标签整理

    Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...

  9. django,模板继承常用标签和规则

    一.定义基础模板 在html内容中定义多个block块,block由子模板引用同名block块,来决定是否替换这些部分{% block title %}一些内容,这里可不填{% endblock %} ...

  10. django学习-7.html模板中include标签使用场景

    1.前言 假设一个公司A有一个网站B,且网站B有5个不同的页面分别为C1,C2,C3,C4,C5. 那么,我们在打开这5个不同页面后去查看页面的整体内容,会发现每个页面的顶部内容.底部内容都一模一样. ...

随机推荐

  1. tp5--Excel表格导入导出

    来源于:https://www.cnblogs.com/MyIsLu/p/6830579.html PHPExcel 扩展包下载地址:             https://github.com/P ...

  2. linux下批量删除文件

    1. 在linux批量删除多级目录下同一格式的文件,可采用find + exec命令组合: 如在删除old目录下的,所有子目录中,后缀为.l的文件方法为: find old -type f -name ...

  3. redis部署与卸载

    1.先到Redis官网(redis.io)下载redis安装包 cd /tmp wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2 ...

  4. 【集群实战】共享存储实时备份(解决nfs共享存储的单点问题)

    1. nfs存储的单点问题 如果nfs服务器宕机了,则所有的nfs客户机都会受到影响.一旦宕机,会丢失部分用户的数据.为了解决单点问题,需要实现共享存储的实时备份,即:将nfs服务端共享目录下的数据实 ...

  5. Netty(六):NioServerSocketChannel源码解析

    我们在Netty学习系列五的最后提出了一些问题还没得到回答,今天来通过学习NioServerSocketChannel的源码来帮我们找到之前问题的答案. 先看一下NioServerSocketChan ...

  6. 从「Hello World」说起

    标签: node模块 从一个简单「hello world」程序对 node.js 有个感性的认识. const http = requier ('http'); const pathname = '1 ...

  7. inotifywait实现文件监控

    应用场景文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步.(可用于代码自动发布) 安装noitify下载地址:http://github. ...

  8. TensorRT入门

    本文转载于:子棐之GPGPU 的 TensorRT系列入门篇 学习一下加深印象 Why TensorRT 训练对于深度学习来说是为了获得一个性能优异的模型,其主要的关注点在与模型的准确度.精度等指标. ...

  9. Jmeter系列(10)- 阶梯加压线程组Stepping Thread Group详解

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 Stepping Thread ...

  10. E. Count The Blocks(找数学规律)

    \(\color{Red}{先说一下自己的歪解(找规律)}\) \(n=1是答案是10\) \(n=2时答案是180\) \(n=3时模拟一下,很容易发现答案是2610\ \ 180\ \ 10\) ...