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 

VariableDescription
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 %}

 

原文地址:https://www.cnblogs.com/zhaoweihang/p/9270376.html