Django Templete模板逻辑语法简单运用(二)

if/else

{% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会显示在 {% if %} 和 {% endif %} 之间的任何内容,且在{% if %}之后{% else %}可选,例如:

{% if today_is_weekend %}
    <p>Welcome to the weekend!</p>
{% else %}
    <p>Get back to work.</p>
{% endif %}

另外,{% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断,或者对变量取反( not ),但是不支持嵌套圆括号,可以使用嵌套if解决。

for

{% for %} 允许我们在一个序列上迭代,每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容。例如:

{% for filed in list %}
    <li>{{ filed.name }}</li>
{% endfor %}

还可以在for循环中添加reserved来反向迭代列表:

{% for filed in list reserved %}
    <li>{{ filed.name }}</li>
{% endfor %}

for循环可以被嵌套,通常我们先检查列表是否为空,为空时会使用{% empty %}输出提示:

{% for filed in list reserved %}
    <li>{{ filed.name }}</li>
{% empty %}
	<p>the list is empty.</p>
{% endfor %}

forloop.counter:整数计数器,从1开始,第一次执行时被设为1,(forloop.counter0从0开始计数,第一次执行时被设为0):

<p>{{ forloop.counter }}: {{ item }}</p>

forloop.revcounter :表示循环中剩余项的整型变量。 在循环初次执行时 forloop.revcounter 将被设置为序列中项的总数。 最后一次循环执行中,这个变量将被置1(同理,forloop.revcounter0执行时被设为序列总数-1,最后一次执行被置为0)
forloop.first 和 forloop.last 为布尔值,判断是否为序列第一个/最后一个,forloop.last常用作为不同的字符串或项添加,或 |
forloop.parentloop 是一个指向当前循环的上一级循环的 forloop 对象的引用(在嵌套循环的情况下)。 例子在此:

{% for list in lists%}
    <table>
    {% for filed in list %}
        <tr>
        <td>List #{{ forloop.parentloop.counter }}</td>
        <td>Filed #{{ forloop.counter }}</td>
        <td>{{ Filed }}</td>
        </tr>
    {% endfor %}
    </table>
{% endfor %}

forloop 变量仅仅能够在循环中使用。 碰到{% endfor %}标签后,forloop就不可访问了。

ifequal/ifnotequal

Django不允许我们在Templete中执行python语法,但是提供了ifequal/ifnotequal方法使用:

{% ifequal usera userb %}
    <h1>Welcome!</h1>
{% endifequal %}

参数也可以是硬编码的字符串,且可以使用{% else %}方法:

{% ifequal usera 'userb' %}
    <h1>Welcome!</h1>
{% else %}
    <h1>No Body</h1>
{% endifequal %}

但是python中的字典,列表,布尔类型的数据不能够用在{% ifequal %}中。

注释

{# 单行注释 #}
{% comment %}
多行注释。
多行注释。
{% endcomment %}

过滤器

过滤器使用管道符 I :
转换大小写:

{{ name|upper }}
{{ name|lower }}

实现查找列表的第一个元素并将其转化为大写:

{{ my_list|first|upper }}

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

{{ bio|truncatewords:"30" }}

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

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

date : 按指定的格式字符串参数格式化 date 或者 datetime 对象, 范例:

{{ pub_date|date:“F j, Y” }}

length : 返回变量的长度。 对于列表,这个参数将返回列表元素的个数。 对于字符串,这个参数将返回字符串中字符的个数。

参考来源:http://docs.30c.org/djangobook2/chapter04/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值