Django 模板标签

Django 模板标签

Django 模板标签笔记,参考并补充 Django 模板 | 菜鸟教程


变量

使用双引号:

<h1>{{ hello }}</h1>

if/else 标签

if/else 对变量判断真假,支持嵌套:

{% if condition1 %}
   ... display 1
{% elif condition2 %}
   ... display 2
{% else %}
   ... display 3
{% endif %}

{% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ),例如:

{% if athlete_list and coach_list %}
     athletes 和 coaches 变量都是可用的
{% endif %}

ifequal/ifnotequal 标签

{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的内容:

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

类似,支持可选的 {% else%} 标签:

{% ifequal section 'sitenews' %}
    <h1>Site News</h1>
{% else %}
    <h1>No News Here</h1>
{% endifequal %}

for 标签

{% for %} 允许我们在一个序列上迭代,支持嵌套使用 {% for %} 标签:

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

给标签增加一个 reversed 使得该列表被反向迭代:

{% for athlete in athlete_list reversed %}
...
{% endfor %}

注释标签

{# 这是一个注释 #}

include 标签

{% include %} 标签允许在模板中包含其它的模板的内容:

{% include "nav.html" %}

过滤器

模板过滤器可以在变量被显示前修改它,过滤器使用管道字符 ” | ”

  • lower: {{ name }} 变量被过滤器 lower 处理后,文档大写转换文本为小写:
{{ name|lower }}
  • first: 返回列表的第1个元素,变量必须是一个列表
  • upper: 过滤管道可以被 *套接* ,一个过滤器管道的输出又可以作为下一个管道的输入,以下实例取第一个元素并将其转化为大写:
{{ my_list|first|upper }}
  • truncatewords: 将字符串转换为省略表达方式, 过滤器的参数跟随冒号之后并且总是以双引号包含:
{{ bio|truncatewords:"30" }}    #显示变量 bio 的前30个词
  • addslashes: 添加反斜杠(转义字符)到任何反斜杠、单引号或者双引号前面
  • length: 返回变量的长度
  • date: 按指定的格式字符串参数格式化 date 或者 datetime 对象:
{{ pub_date|date:"F j, Y" }}    #F 月份, j 每月第几天, Y Year 4位数字表示

模板继承

模板可以用继承的方式来实现复用
base.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> Django 模板 </title>
</head>
<body>
    <h1>Hello Django!</h1>
    <p>Django 模板标签</p>
    {% block mainbody %}
        <p>我是老大</p>
    {% endblock %}
</body>
</html>

以上代码中,名为 mainbody 的 block 标签是可以被继承者们替换掉的部分;
所有的 {% block %} 标签告诉模板引擎,子模板可以重载这些部分。

hello.html 中继承 base.html:

{% extends "base.html" %}
{% block mainbody %}
    <p>我是老二,继承了base.html文件</p>
{% endblock %}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值