模板文件包括两部分:
模板变量名是由数字,字母,下划线和点组成的,不能以下划线开头。
使用模板变量:{{模板变量名}},
使用模板变量时,.前面的可能是一个字典,可能是一个对象,还可能是一个列表。
例如:{{ dogs.name }}
1)把dogs当成一个字典,把name当成键名
2)把dogs当成一个对象,把name当成属性
3)把dogs当成一个对象,把name当成对象的方法
模板按照上面的顺序进行解析。
语法: {% 代码段 %}
{% for x in 列表 %}
....
{% endfor %}
{% if ... %}
....
{% elif ... %}
....
{% endif %}
示例
{% for i in books %}
<tr>
<td>{{ i.id}}</td>
<td>{{ i.title }}</td>
<td>{{ i.author }}</td>
</tr>
{% endfor %}
<select>
{% for i in books %}
{% if i.id == 1 %}
<option selected="selected" value="{{ i.id }}">{{ i.title }}</option>
{% else %}
<option value="{{ i.id }}">{{ i.title }}</option>
{% endif %}
{% endfor %}
</select>
在Django的模板语言中,通过使用 filter 来改变变量的显示。
语法: {{ value|filter_name:参数 }}
参考文档:https://docs.djangoproject.com/zh-hans/2.2/ref/templates/builtins/
#如果一个变量是false或者为空,使用给定的默认值
{{ value|default:"hello"}}
# 将值格式化为一个对人友好可读文件大小 (例如 ‘200 KB‘, ‘10.5 MB‘, ‘1.8 GB ‘, 等等)
{{ value|filesizeformat }}
{{ value|date:"Y-m-d H:i:s"}}
{{value|slice:"1:-1"}}
{{ value|safe}}
自定义过滤器只是带有一个或两个参数的Python函数
参考文档:https://docs.djangoproject.com/zh-hans/2.2/howto/custom-template-tags/
示例:
1.django项目mysite,app应用book_show, 自定义other_filter.py,位置如下
book_show/
__init__.py
models.py
templatetags/
__init__.py
other_filter.py
views.py
2.other_filter.py,如下
from django import template
register = template.Library()
@register.filter(name="cut")
def str_pre(value, pre_str):
"""添加前缀"""
return "{}-{}".format(pre_str, value)
3.使用
{# 首先导入自定义filter那个文件,之后就可以正常使用了 #}
{% load other_filter %}
原文:https://www.cnblogs.com/luckyleaf/p/12690466.html