django 模板系统
django的模板系统支持很多方法
比如 {{ book_list.0.title }} 它可以通过点来调用不带参数的方法
还有 {{book_content | safe }} 就可以把html的样式给读进去
{{ value | default:'nothing' }}
如果value没有传值的话就显示默认值nothing
Filters 方法
{{value | length}}
如果value有长度如 value=[1,2,3] length 就是3
filesizeformat 将值格式化为人类可读的文件单位 (如kb,mb)
假如value是123456789, 输出的将会是117,7MB
slice 切片
{{ value | slice:"2:-1" }}切片方法一样
date格式化
{{ value | date: "Y-m-d H:i:s" }}
truncatechars
如果字符串多于指定的value数值,name就会被截断,截断的字符串将会以省略号点点点的方式展现。
自定义filter
自定义过滤器只是带有一个或2个参数的python函数:
- 变量(输入)的值 - -不一定是一个字符串
- 参数的值 - 这可以有一个默认值,或完全省略
例如,在过滤器{{var | foo:“bar”}}中,过滤器foo将传递变量var和参数“bar”。
app01/
__init__.py
models.py
templatetags/ # 在app01下面新建一个package package
__init__.py
app01_filters.py # 建一个存放自定义filter的文件
views.py
- 变量(输入)的值 - -不一定是一个字符串
- 参数的值 - 这可以有一个默认值,或完全省略
例如,在过滤器{{var | foo:“bar”}}中,过滤器foo将传递变量var和参数“bar”。
{# 先导入我们自定义filter那个文件 #} {% load app01_filters %} {# 使用我们自定义的filter #} {{ somevariable|cut:"0" }} {{ d.name|addSB }}
Tags
for
Variable | Description |
---|---|
forloop.counter |
当前循环的索引值(从1开始) |
forloop.counter0 |
当前循环的索引值(从0开始) |
forloop.revcounter |
当前循环的倒序索引值(从1开始) |
forloop.revcounter0 |
当前循环的倒序索引值(从0开始) |
forloop.first |
当前循环是不是第一次循环(布尔值) |
forloop.last |
当前循环是不是最后一次循环(布尔值) |
forloop.parentloop |
本层循环的外层循环 |
for empty:
<ul>
{% for user in user_list %}
<li>{{ user.name }}</li>
{% empty %}
<li>空空如也</li>
{% endfor %}
</ul>
if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。
定义一个中间变量:
{% with total=business.employees.count %} {{ total }} employee{{ total|pluralize }} {% endwith %}