现在有一个News类,用来存储新闻信息。它具有NewsTitle,NewsContent,NewsDate和NewsSource等几个属性。newslist是一个news对象的序列。
模板标签
include
载入一个模板,并根据上下文渲染它。用于在一个模板中包含其他模板。
extends
标记当前模板扩展一个父模板。
这个标签有两种用法:
1. {% extends "xxx.html" %} 直接使用要扩展的父模板的名字“xxx.html”
2. {% extends variable %} 用变量variable的值来指定父模板,如果变量是一个字符串,Django会把字符串的值当做父模板的文件名,如果变量是一个Template对象,Django会把这个对象作为父模板。
在使用extends标签时,必须保证其为模板的第一个模板标记。否则,模板继承将不起作用。
block
{% block %}标签告诉模板引擎,子模板可以重载这些部分。一般来说,如果发现在多个模板之间拷贝代码,则应该考虑将该代码放置到父模板的某个block中。基础模板中的{%block%}越多越好。子模板不必定义父模板中所有的代码块,只需要用合理的缺省值对一些代码块进行填充,然后只对子模板所需要的代码块进行重定义。不可以在同一个模板中定义多个同名的block。
{% block body_content %}
{% endblock%}
for
轮询数组中的每一个元素
{{% for news in newslist %}}
{{% endfor %}}
在循环过程中 for 循环会设置以下的一系列变量:
| Variable |
Description |
| forloop.counter |
当前循环次数 (1-indexed) |
| forloop.counter0 |
当前循环次数 (0-indexed) |
| forloop.revcounter |
倒序循环时当前循环次数(1-indexed) |
| forloop.revcounter0 |
倒序循环时当前循环次数(0-indexed) |
| forloop.first |
如果当前循环是循环过程的第一次则为True |
| forloop.last |
如果当前循环是循环过程的最后一次则为True |
| forloop.parentloop |
对嵌套循环, 当前循环之上的循环 |
if
if标签用来判断一个变量是否为真,如果为真,则输出区块中的内容。
{{% if news.NewsTitle %}}
<p>{new.NewsTitle}</p>}
{{% else %}}
<p>新闻标题为空</p>
{{% endif %}}
ifequal
如果两个参数相等,输出该块的内容。
{% ifequal type "新闻"%}
输出新闻内容
{% endifequal %}
ifnotequal
和ifequal类似,不过它用来测试两个参数是不相等的。
firstof
输出传入的第一个不是False的变量,如果被传递的变量都为False,则什么也不输出。
{% firstof var1 var2 var3 %}
这等同于如下内容:
{% if var1 %}
{{var1}}
{% else %}{% if var2 %}
{{var2}}
{% else %}{% if var3 %}
{{var3}}
{% endif %}{% endif %}{% endif %}
过滤器
add
向变量中添加值
{{ NewsTitle|add:"云计算"}}
slice
返回字符串的指定长度的子串,如下所示,提取出NewsContent的前200个字符
{{ NewsContent | slice:":200" }}
first
返回列表中的第一个元素。
length
返回值的长度。
django常用的内建的模板标签和过滤器
原文:http://blog.csdn.net/magicharvey/article/details/12582299