接着Django模板-基础知识继续写模板相关知识。

if标签

{% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not )。

但是不允许在同一个标签中同时使用 and 和 or,下边是不合法的:

{% if athlete_list and coach_list or cheerleader_list %}

多次使用同一个逻辑操作符是没有问题的,但是我们不能把不同的操作符组合起来。

{% if athlete_list or coach_list or parent_list or teacher_list %}

系统不支持用圆括号来组合比较操作。如果需要用到圆括号来组合表达你的逻辑式,考虑将它移到模板之外处理,然后以模板变量的形式传入。或者仅仅用嵌套的{% if %}标签替换。

另外,并没有 {% elif %} 标签(注意区分Python语法和Django模板语法), 请使用嵌套的‘{% if %}’ 标签来达成同样的效果。

最后,一定要用 {% endif %} 关闭每一个 {% if %} 标签。

for标签

{% for %}标签允许我们在一个序列上迭代。

给定一个运动员列表 athlete_list 变量,我们可以使用下面的代码来显示这个列表

<ul>
{% for athlete in athlete_list %}<li>{{ athlete.name }}</li>
{% endfor %}
</ul>

给标签增加一个 reversed 使得该列表被反向迭代

{% for athlete in athlete_list reversed %}
...
{% endfor %}

在执行循环之前先检测列表的大小是一个通常的做法,当列表为空时输出一些特别的提示。

{% if athlete_list %}{% for athlete in athlete_list %}<p>{{ athlete.name }}</p>{% endfor %}
{% else %}<p>There are no athletes. Only computer programmers.</p> {% endif %}

因为这种做法十分常见,所以`` for`` 标签支持一个可选的`` {% empty %}`` 分句,通过它我们可以定义当列表为空时的输出内容 下面的例子与之前那个等价:

{% for athlete in athlete_list %}<p>{{ athlete.name }}</p>
{% empty %}<p>There are no athletes. Only computer programmers.</p>
{% endfor %}

Django中for标签不支持退出循环操作,也不支持continue语句。

在每个 {% for %} 循环里有一个称为‘forloop’ 的模板变量。这个变量有一些提示循环进度信息的属性,forloop.counter 总是一个表示当前循环的执行次数的整数计数器。这个计数器是从1开始的,所以在第一次循环时 forloop.counter 将会被设置为1。

{% for item in todo_list %}<p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}

forloop.counter0 类似于 forloop.counter ,但是它是从0计数的。

forloop.revcounter 是表示循环中剩余项的整型变量。

forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。

forloop.first 是一个布尔值,如果该迭代是第一次执行,他被置为True

forloop.last 是一个布尔值;在最后一次执行循环时被置为True

{% for link in links %}    {{ link }}    {% if not forloop.last %}         |     {% endif %}{% endfor %}

forloop.parentloop 是一个指向当前循环的上一级循环的 forloop 对象的引用(在嵌套循环的情况下)

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 %}

只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数,其他任何类型,例如Python的字典类型、列表类型、布尔类型,不能用在 {% ifequal %} 中

{# okay below #}
{% ifequal variable 1 %}
{% ifequal variable 1.23 %}
{% ifequal variable 'foo' %}
{% ifequal variable "foo" %}{# error below #}
{% ifequal variable True %}
{% ifequal variable [1, 2, 3] %}
{% ifequal variable {'key': 'value'} %}

如果你需要判断变量是真还是假,请使用 {% if %} 来替代 {% ifequal %} 。

注释标签

单行注释使用 {# #}

{# This is a comment #}

多行注释,可以使用{% comment %}模板标签

{% comment %}
This is a
multi-line comment.
{% endcomment %}

过滤器

过滤器使用管道字符(|)

示例: {{ name|lower }}

过滤管道可以被套接,就是说,一个过滤器管道的输出又可以作为下一个管道的输入,如此下去。 下面的例子实现查找列表的第一个元素并将其转化为大写。

{{ my_list|first|upper }}

有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:

{{ bio|truncatewords:"30" }}

这个将显示变量 bio 的前30个词。

addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含JavaScript的文本时是非常有用的。

date : 按指定的格式字符串参数格式化 date 或者 datetime 对象, 范例:
{{ pub_date|date:"F j, Y" }}

length : 返回变量的长度。 对于列表,这个参数将返回列表元素的个数。 对于字符串,这个参数将返回字符串中字符的个数。 你可以对列表或者字符串,或者任何知道怎么测定长度的Python 对象使用这个方法(也就是说,有 __len__() 方法的对象)。

小结

基本copy书上的,自己摘出一部分,东西太多,没有进行测试。接下来的内容会以运行示例来说明。

转载于:https://www.cnblogs.com/cotton/p/3835297.html

Django模板-模板标签相关推荐

  1. Django框架(23.Django中的模板的标签、变量、过滤器和注释)

    模板 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观 ...

  2. Django 模板语言 标签

    前言:django的模板语法基本和flask的jinja2基本一样.下面比较一下两个模板语法的区别. ------深度变量的查找(万能的句点号) 在 Django 模板中遍历复杂数据结构的关键是句点字 ...

  3. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...

  4. Django 使用模板页面,块标签,模型

    1.Django 使用模板页面 Django对于成体系的页面提出了模板继承和模板加载的方式. 1.导入静态页面 2.导入静态文件(css,js,images) 3.修改页面当中的静态地址 1.sett ...

  5. Django模板系统——标签(Tags)

    使用Django中的标签可以在模板中做一些简单的逻辑判断. 格式:{%标签%} for标签 for 标签和python中的for循环,执行原理相同 格式: {%for 临时变量 in 变量%} ... ...

  6. django html过滤,django templates模板过滤器过滤掉字符串含有的html标签

    django templates模板过滤器过滤掉字符串含有的html标签 在template用法:{{ myvar|striptags }} 如果myvar的字符串是"吾爱孟夫子,风流天下闻 ...

  7. Django(part12)--模板的标签

    学习笔记,仅供参考 文章目录 模板的标签 if标签 for标签 for...empty标签 cycle标签 注释 comment标签 举几个例子 模板的标签 作用 将一些服务器端的功能嵌入到模板中 标 ...

  8. Django的模板层

    一 模板语法之变量 在Django模板中遍历复杂数据结构的关键是句点字符,语法: {{var_name}} views.py: def index(request): import datetimes ...

  9. django之模板语法

    1. 变量 Django 模板中遍历复杂数据结构的关键是句点字符 句点符 views.py def index(request):'''模板语法:渲染变量 -> {{}}1. 深度查询,用的句点 ...

  10. 04 Django之模板系统

    一.语法 关于模板渲染只需要记住两种特殊符号(语法): {{ }} 和 {% %}  (变量相关用{{ }}  逻辑相关用{% %}) 二.变量 在Django的模板语言中按照{{ 变量名 }}来使用 ...

最新文章

  1. Tomcat集群+Nginx反向代理+负载均衡
  2. java 多态向子类,在Java多态中调用子类
  3. 图像局部显著性—点特征(SIFT为例)
  4. vue-cli-service不是内部或外部命令,也不是可运行的程序
  5. linux 统计目录大小并按大小排序
  6. 字节跳动实验室招聘户型图理解实习生|北京
  7. 六一儿童节特辑|哪部“奥特曼”才是90后的心中最爱??数据分析师来告诉你...
  8. mysql创建表设置数值范围,MySQL创建数据表时设定引擎MyISAM/InnoDB操作
  9. Apple原装扫描二维码指定区域
  10. 如何利用PHOTOSHOP将图片旋转45度
  11. JavaScript的封装方法
  12. origin 去掉白边
  13. 一文带你认识HTML
  14. 普元中间件Primeton AppServer6.5安装(Windows)
  15. C语言—超长正整数的乘法实现简洁版
  16. 请求后台时对uri进行编码——即encodeURIComponent()的使用
  17. 第1.3章:StarRocks部署--单机部署
  18. dhcp协议服务器怎么设置,DHCP服务器如何设置?
  19. 模仿猫眼电影静态网页展示
  20. 《三体》-- 刘慈欣

热门文章

  1. 陈赫入场,抖音背后的决心!
  2. “等我干 IT 发财了,就和你离婚”
  3. android动态注册广播权限,记动态注册广播权限问题
  4. 线性回归 - LinearRegression - 预测糖尿病 - 量化预测的质量
  5. 【转】Postman 使用方法详解
  6. Android 数字动画
  7. 中文问题-Mobile-UrlEncode
  8. net_sf_interfacecpp项目诞生宣言
  9. Aoto Deploy Project 1.0 (rebuild version)
  10. 线程、协程、Goroutine的区别和联系