django dtl 模板操作语言

参考:https://docs.djangoproject.com/zh-hans/2.0/ref/templates/builtins/

1.变量

  {{viriable}}

  例如{{book.name}}

  name可以为属性,也可以为model对象方法,也可以后面加索引

2.标签

  {% xxx %}

  for标签,示例如下

    {% for hero in heros %}
        {% if forloop.counter|divisibleby:"2" %}
            <li style="color: red;">{{ forloop.counter }}:{{ forloop.counter0 }}:{{ hero.hname }}</li>
            {% else %}
            <li style="color: green;">{{ forloop.counter }}:{{ forloop.counter0 }}:{{ hero.hname }}</li>
        {% endif %}
    {% empty %}
        <li>啥也没找到</li>
    {% endfor %}

    for中常用属性:

forloop.counter    索引从 1 开始算
forloop.counter0    索引从 0 开始算
forloop.revcounter    索引从最大长度到 1
forloop.revcounter0    索引从最大长度到 0
forloop.first    当遍历的元素为第一项时为真
forloop.last    当遍历的元素为最后一项时为真
forloop.parentloop    用在嵌套的 for 循环中,获取上一层 for 循环的 forloop

  if 标签:

{ %if ...%}
逻辑1
{ %elif ...%}
逻辑2
{ %else%}
逻辑3
{ %endif%}

  comment标签:

{ % comment % }
多行注释
{ % endcomment % }

  csrf_token标签:(防止跨站攻击)

{ % csrf_token %}

  autoescape标签:设置转义开关

   {% autoescape off %}
        {{ t1 }}
    {% endautoescape %}

    或者使用过滤器:  

{{t1|safe}}#关闭转义
{{t1|escape}}#使用转义,默认不使用escape,即默认使用转义

  特别的:视图传向模板的数据,是转义的,模板内的标签数据不转义

Django会将如下字符自动转义:
    < 会转换为&lt;
    > 会转换为&gt;
    ' (单引号) 会转换为&#39;
    " (双引号)会转换为 &quot;
    & 会转换为 &amp;

  

  include标签:(加载模板) 

{ %include "foo/bar.html" % }

  url标签:(反向解析url)

{ % url 'name' p1 p2 %}
{% url 'some-url-name' arg arg2 as the_url %}
 
<a href="{{ the_url }}">链接到:{{ the_url }}</a>

  firstof标签:

{% firstof var1 var2 var3 %}等价于:
{% if var1 %}
    {{ var1 }}
{% elif var2 %}
    {{ var2 }}
{% elif var3 %}
    {{ var3 }}
{% endif %}

  block标签(继承后可以重写)

  extends标签:(继承)

3.过滤器

  语法:{ { 变量|过滤器 }}

  

{{ value|add:"2" }}  # 加法
{{ value|add:"-2" }}  # 减法
{{forloop.counter|divisibleby:"2" }} #取模

乘法 A*B: {% widthratio A 1 B %}
除法 A/B: {% widthratio A B 1 %}
计算 A^2: {% widthratio A 1 A %}
计算 (A+B)^2: {% widthratio A|add:B 1 A|add:B %}
计算 (A+B) * (C+D): {% widthratio A|add:B 1 C|add:D %}

{{ value|capfirst }}  # 首字母大写
{{ value|title }}  # 句子单词首字母大写
{{ value|center:"15" }}  # 文字居中,剩余填充
{{ value|ljust:"10" }}  # 文字左对齐,剩余填充
{{ value|rjust:"10" }}  # 文字右对齐,剩余填充
{{ value|cut:" " }}  # 移除空白
{{ value|date:"D d M Y" }}  # 日期格式化
{{ value|time:"H:i" }}  # 时间格式化
{{ value|default:"nothing" }}  # 空值默认
{{ value|default_if_none:"nothing" }}  # None值默认
{{ value|dictsort:"name" }}  # 字典排序
{{ value|filesizeformat }}  # 文件大小格式化
{{ value|first }}  # 序列的第一个值
{{ value|last }}  # 序列最后一个值
{{ value|floatformat:3 }}  # 浮点值精度
{{ value|join:" // " }}  # 序列拼接
{{ value|make_list }}  # 字符串转列表
{{ value|length }}  # 序列长度
{{ value|length_is:"4" }}  # 长度判断
{{ value|lower }}  # 字符串转小写
{{ value|upper }}  # 字符串转小写
{{ value|random }}  # 序列中随机取值
{{ some_list|slice:":2" }}  # 切片
{{ value|striptags }}  # 去除标签
{{ value|truncatechars:9 }}  # 控制输出字符长度,超出省略号
{{ value|truncatewords:2 }}  # 控制输出单词长度,超出省略号
{{ value|wordcount }}  # 统计字数

 

posted on 2018-07-18 14:36  么么唧唧  阅读(995)  评论(0编辑  收藏  举报

导航