Chinaunix首页 | 论坛 | 博客
  • 博客访问: 166580
  • 博文数量: 73
  • 博客积分: 3106
  • 博客等级: 中校
  • 技术积分: 730
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-11 22:57
文章分类

全部博文(73)

文章存档

2018年(2)

2016年(1)

2012年(8)

2011年(21)

2010年(41)

我的朋友

分类: Python/Ruby

2010-08-11 21:50:26

Python的“真值”:在Python和Django模板系统中,空列表([]),空元组(()),空字典({}),空字符串(''),零值(0),特殊对象None,对象False,这些对象相当于布尔值得False
  • if/else : {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会显示在 {% if %} 和 {% endif %} 之间的任何内容

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

 # {% if %}标签接受and,or或者not关键字来对多个变量做判断,或者对变量取反(not)
 # {% if %}标签不允许在同一个标签中同时使用 and 和 or ,因为逻辑上可能模糊的
 # 多次使用同一个逻辑操作符是没有问题的,但是我们不能把不同的操作符组合起来。
 # 并没有 {% elif %} 标签, 请使用嵌套的`` {% if %}`` 标签来达成同样的效果
  • for : {% for %} 允许我们在一个序列上迭代。 与Python的 for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容。

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

 # 给标签增加一个 reversed 使得该列表被反向迭代:
            {% for athlete in athlete_list reversed %}
             ...
            {% endfor %}
 # 可以嵌套使用 {% for %} 标签
 # 在执行循环之前先检测列表的大小是一个通常的做法,当列表为空时输出一些特别的提示。因为这种做法 
   十分常见,所以`` for`` 标签支持一个可选的`` {% empty %}`` 分句,通过它我们可以定义当列表
   为空时的输出内容:
            {% for athlete in athlete_list %}
              

{{ athlete.name }}


            {% empty %}
              

There are no athletes. Only computer programmers.


            {% endfor %}
 # Django不支持退出循环操作。 如果我们想退出循环,可以改变正在迭代的变量,让其仅仅包含需要迭代 
   的项目。 同理,Django也不支持continue语句,我们无法让当前迭代操作跳回到循环头部。
 # 在每个`` {% for %}``循环里有一个称为`` forloop`` 的模板变量。这个变量有一些提示循环进度信
   息的属性。
   --forloop.counter  总是一个表示当前循环的执行次数的整数计数器。 这个计数器是从1开始的,所
     以在第一次循环时 forloop.counter 将会被设置为1。
   --forloop.counter0  类似于 forloop.counter  ,但是它是从0计数的。 第一次执行循环时这个
     变量会被设置为0。
   --forloop.revcounter  是表示循环中剩余项的整型变量。 在循环初次执行forloop.revcounter 
     将被设置为序列中项的总数。 最后一次循环执行中,这个变量将被置1。
   --forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。在第一次执行循
     环时,该变量会被置为序列的项的个数减1。
   --forloop.first  是一个布尔值,如果该迭代是第一次执行,那么它被置为````,在下面的情形中这个
     变量是很有用的:
     {% for object in objects %}
        {% if forloop.first %}
  • {% else %}
  • {% endif %}
            {{ object }}
           

  •      {% endfor %}
       --forloop.last 是一个布尔值;在最后一次执行循环时被置为True。 一个常见的用法是在一系列的链
         接之间放置管道符(|)
       --forloop.parentloop  是一个指向当前循环的上一级循环的 forloop  对象的引用(在嵌套循环的
         情况下)。
    • ifequal/ifnotequal:{% ifequal %} 标签比较两个值,当他们相等时,显示在 {%  ifequal %} 和 {% endifequal  %} 之中所有的值

    {% ifequal user currentuser %}
        <h1>Welcome!>

    {% endifequal %}

         # 和 {% if %} 类似, {% ifequal  %} 支持可选的 {% else%} 标签
         # 参数可以是硬编码的字符串,随便用单引号或者双引号引起来.
         # 只有模板变量,字符串,整数和小数可以作为 {%  ifequal %} 标签的参数,其他任何类型,例如
           Python的字典类型、列表类型、布尔类型,不能用在 {% ifequal %}  中。
    • 注释注释使用 {# #}

    {# This is a comment #}

         # 用这种语法的注释不能跨越多行,这个限制是为了提高模板解析的性能。如果要实现多行注释,可以
           使用`` {% comment %}`` 模板标签,就像这样:
                  {% comment %}
                      This is a
                      multi-line comment.
                  {% endcomment %}
    • 过滤器:模板过滤器是在变量被显示前修改它的值的一个简单方法,过滤器使用管道字符

    {{ name|lower }}

        # 过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入,如此下
          去。
        # 有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:
            {{ bio|truncatewords:"30" }}
          --addslashes  : 添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含JavaScript
            的文本时是非常有用的。
          --date : 按指定的格式字符串参数格式化 date 或者 datetime 对象
          --length : 返回变量的长度。 对于列表,这个参数将返回列表元素的个数。 对于字符串,这个参
            数将返回字符串中字符的个数。
    阅读(1018) | 评论(0) | 转发(0) |
    0

    上一篇:益智题

    下一篇:忘记ubuntu root密码

    给主人留下些什么吧!~~