Django模板层——模板语法

网友投稿 860 2022-05-30

模板语法

1.变量

变量输出语法

{ { var } }

当模版引擎遇到一个变量,将计算这个变量,然后将结果输出

变量名必须由字母、数字、下划线(不能以下划线开头)和点组成

当模版引擎遇到点("."),会按照下列顺序查询:

Django模板层——模板语法

字典查询,例如:foo["bar"]

属性或方法查询,例如:foo.bar

数字索引查询,例如:foo[bar]

如果变量不存在, 模版系统将插入'' (空字符串)

在模板中调用方法时不能传递参数

2.标签

语法

{ % tag % }

作用

在输出中创建文本

控制循环或逻辑

加载外部信息到模板中

{ % for ... in ... % } 循环逻辑 { % endfor % }

{ % if ... % } 逻辑1 { % elif ... % } 逻辑2 { % else % } 逻辑3 { % endif % }

{ % comment % } 多行注释 { % endcomment % }

{ % include "base/index.html" % }

{ % url 'name' p1 p2 % }

{ % csrf_token % }

3.过滤器

语法:

{ { 变量|过滤器 } },例如{ { name|lower } },表示将变量name的值变为小写输出

使用管道符号 (|)来应用过滤器

通过使用过滤器来改变变量的计算结果

关闭HTML自动转义

{ { data|safe } }

可以在if标签中使用过滤器结合运算符

if list1|length > 1

过滤器能够被“串联”,构成过滤器链

name|lower|upper

过滤器可以传递参数,参数使用引号包起来

list|join:", "

default:如果一个变量没有被提供,或者值为false或空,则使用默认值,否则使用变量的值

value|default:"什么也没有"

date:根据给定格式对一个date变量格式化

value|date:'Y-m-d'

官方文档内置过滤器参考:

网址:https://docs.djangoproject.com/zh-hans/2.2/ref/templates/builtins/#ref-templates-builtins-filters

4.注释

单行注释

{# 注释 #}

多行注释

{% comment %} 多行注释 {% endcomment %}

5.模板运算

{ { value|add:10 } } note:value=5,则结果返回15

{ { value|add:-10 } } note:value=5,则结果返回-5,加一个负数就是减法了

{ % widthratio 5 1 100 % } note:等同于:(5 / 1) * 100 ,结果返回500, withratio需要三个参数,它会使用参数1/参数2*参数3的方式进行运算,进行乘法运算,使「参数2」=1

{ % widthratio 5 100 1 % } note:等同于:(5 / 100) * 1,则结果返回0.05,和乘法一样,使「参数3」= 1就是除法了。

6.自定义 标签 或 过滤器

首先在当前应用目录下创建一个templatetags模板标签目录,建议内放一个__init__.py的空文件

然后在templatetags目录下创建一个模板标签文件pagetag.py,具体代码如下:

templatetags ├── pagetag.py ----------------pagetag.py------------------------- from django import template register = template.Library() # 自定义过滤器(实现大写转换) @register.filter def myupper(val): # print ('val from template:',val) return val.upper() # 自定义标签(实现减法计算) #from django.utils.html import format_html @register.simple_tag def jian(a,b): res = int(a) - int(b) return res

使用:在模板文件使用 { % load pagetag % }

6. 自定义标签

{% load pagetag %} 大写:{{name|myupper}}
相减:{% jian m1 m2 %}

Django

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【愚公系列】2021年12月 Python教学课程 32-Django框架之命令行创建项目
下一篇:Golang系列之浮点型与复数类型
相关文章