django常用的内建的模板标签和过滤器

现在有一个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 循环会设置以下的一系列变量:

VariableDescription
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

将一个字符串完全转化为小写。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值