模板语法之变量
# in views:
import datetime
def index(request):
s="hello"
l=[111,222,333] # 列表
dic={"name":"aaa","age":18} # 字典
date = datetime.date(1993, 5, 2) # 日期对象
class Person(object):
def __init__(self,name):
self.name=name
person_aa=Person("aa") # 自定义类对象
person_bb=Person("bb")
person_cc=Person("cc")
person_list=[person_aa,person_bb,person_cc]
return render(request,"index.html",{"l":l,"dic":dic,"date":date,"person_list":person_list})
# in templates html:
<h4>{{s}}</h4>-------hello
<h4>列表:{{ l.0 }}</h4>-------111
<h4>列表:{{ l.2 }}</h4>-------333
<h4>字典:{{ dic.name }}</h4>-------aaa
<h4>日期:{{ date.year }}</h4>-------1993
<h4>类对象列表:{{ person_list.0.name }}</h4>-------aa
模板之标签
for标签
{% for key,val in dic.items %}
<p>{{forloop.counter}}--{{ key }}:{{ val }}</p>-----显示:1--key:val
{% empty %}----当字典或者列表为空时,执行这条语句。
<p>sorry,no person here</p>
{% endfor %}
forloop.counte----从1开始增加
forloop.counter0----从0开始
forloop.revcounter----倒序至1结束
forloop.revcounter0----倒序至0
forloop.first----第一个值
forloop.last----最后一个值
if 标签
{% if num > 100 or num < 0 %}
<p>无效</p>
{% elif num > 80 and num < 100 %}
<p>优秀</p>
{% else %}
<p>凑活吧</p>
{% endif %}
with 标签
{% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}
模板之过滤器
语法:
{{obj|filter__name:param}}
default
如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:
{{ value|default:"nothing" }}
length
a=['a', 'b', 'c', 'd']
{{ a|length }}------值为4
filesizeformat
将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:
a=123456789
{{ a|filesizeformat }}------值为 117.7 MB。
date
time=datetime.datetime.now()
{{ time|date:"Y-m-d" }}------2017-10-27
slice
a="hello world"
{{ a|slice:"2:-1" }}------值为 llo worl
safe
Django的模板中会对HTML标签和JS等语法标签进行自动转义,通过过滤器“|safe”的方式
告诉Django这段代码是安全的不必转义
value="<a href="">点击</a>"
{{ value|safe}}---------html里以文本显示这段代码<a href="">点击</a>