首页
登录 | 注册

Django模板系统(二)

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 : 返回变量的长度。 对于列表,这个参数将返回列表元素的个数。 对于字符串,这个参
            数将返回字符串中字符的个数。

    相关文章

    • 在以前的博文中分别介绍了基于ASP和PHP的开源CMS程序一览,今天为网友献上18个Java开源CMS系统大餐,以飨网友厚爱.1.InfoGlueinfoglue是一个高级的.可扩展的.强壮的内容管理系统,完全用Java开发.重要的功能包括 ...
    • Django之用户登录跳转
      上次介绍了用户登录界面的使用,主要是使用bootstrap,这方面有兴趣的朋友可以去深入的学习下. 另外上次也给出了一些用户登录以及注册的函数,可能一下子代码有点多,这次主要是简化新加用户的方法和使用, 这些掌握了以后可以接着上次说的函数来 ...
    • scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.scp命令可以在linux服务器之间复制文件和目录.scp使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件. [root@tank test]# ...
    • GSC3280的ADC子系统驱动模型(二)
      一.ADC子系统--创建设备文件         本部分包括创建设备节点和在应用层通过操作/dev目录下的设备节点来控制设备. 1.1.创建设备节点         在第一篇文章中的ADC子系统核心的注册函数中,调用了adc_dev_ini ...
    • 使用jenkins+maven+nexus+sonar的持续集成构建系统 2013年写的一篇老文,记录当时在公司搭建的jenkins持续集成系统. 一.系统规划 1.说明 jenkins  自动构建系统,调用maven 进行构建 maven ...
    • 网工的Linux系统学习历程 [if !supportLists]一.[endif]偶遇篇 作为一名通过思科CCNP认证的网络工程师,专注于网络技术.但在日常的工作中,难免不接触到服务器,对于大多数服务器来说,鉴于稳定性等因素的考虑,基本使 ...

    2020 unjeep.com webmaster#unjeep.com
    12 q. 0.012 s.
    京ICP备10005923号