django模板语法
Posted chichung
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django模板语法相关的知识,希望对你有一定的参考价值。
前言:django的模板语法基本和flask的jinja2基本一样。下面比较一下两个模板语法的区别。
1.模板变量
django:{{ 变量 }} # 因为django只有一个context返回,全部数据都集中在一起
jinja2:{{ 对象.变量 }}
2.根据列表的下标获取值
django:{{ 列表.0 }}
jinja2:{{ 列表[0] }}
3.根据字典的键获取字典的值
django:{{ 字典.key }}
jinja2:{{ 字典[key] }}或者{{ 字典.key }}
4.for循环时取序号
django:
{% for item in 列表 %} {{forloop.counter}} <1-- 表示当前是第几次循环,从1开始 --> {{forloop.counter0}} <!-- 表示当前是第几次循环,从0开始 -->{% endfor %}
jinja2:
{% for item in 列表 %} {{loop.index}} <1-- 表示当前是第几次循环,从1开始 --> {{loop.index0}} <!-- 表示当前是第几次循环,从0开始 -->{% endfor %}
5.列表为空时执行逻辑
django:
{% for item in 列表 %} {{forloop.counter}} <1-- 表示当前是第几次循环,从1开始 --> {{forloop.counter0}} <!-- 表示当前是第几次循环,从0开始 --> {% empty %} 列表为空或不存在时执行此逻辑 {% endfor %}
jinja2:无
6.运算符之间的空格
django:{% if a==1 %} # 错误
{% if a == 1 %} # 正确
jinja2:两种都可以
7.过滤器
django:
变量|过滤器:参数
jinja2:变量 | 过滤器(参数) 常见的jinja2过滤器:https://www.cnblogs.com/chichung/p/9775099.html
django的常见几个过滤器如下:
- safe,禁用html转义(显示html标签样式,而不是字符串)
- length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
default,默认值,如果变量不存在时则返回默认值。
data|default:‘默认值‘
date,日期,用于对日期类型的值进行字符串格式化,常用的格式化字符如下:
- Y表示年,格式为4位,y表示两位的年。
- m表示月,格式为01,02,12等。
- d表示日, 格式为01,02等。
- j表示日,格式为1,2等。
- H表示时,24进制,h表示12进制的时。
- i表示分,为0-59。
- s表示秒,为0-59。
value|date:"Y年m月j日 H时i分s秒"
8.多行注释
django:
{% comment %} ... {% endcomment %}
9.对有需要的block进行重写
django:
- 不用重写父模版中的所有block,如果子模版没有重写,则使用父模版定义的默认值。
-
可以使用
block.super
来包含父模板的块中定义的内容,如下
{% block 名称 %} 子模板的内容 {{ block.super }} 显示父模板中block的内容 {% endblock %}
{{ block.super }}——引用上级代码块在其基础上进行一些修改
flask:
同样原理,不过用的是{{ super() }}
以上是关于django模板语法的主要内容,如果未能解决你的问题,请参考以下文章
每当我将 Python 代码放入 Django 模板时都会出现语法错误