现在有一个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
返回值的长度。
upper
将一个字符串完全转化为小写。