将服务器端的功能嵌入到模板中,流程控制……
标签语法:模板标签中引用变量不用再加双花括号
{% 标签 %}
……
{% 结束标签 %}
//if标签 运算符== != < > ……都能用,但括号优先级不能用
{% if 表达式 %}
……
{% elif 表达式 %}
……
{% endif %}
综合-计算器
使用模板和视图函数做一个计算器
视图函数
def scal(request):
# 拆分为GET和POST两种方法,如果是post方法才进行运算,与模板的action对应
if request.method == 'GET':
return render(request, 'scal.html')
elif request.method == 'POST':
x = int(request.POST['x'])
y = int(request.POST['y'])
op = str(request.POST['op'])
result = 0
if op == 'add':
result = x+y
elif op == 'sub':
result = x-y
elif op == 'mul':
result = x*y
elif op == 'div':
result = x/y
# locals 可以将函数体中各变量打包成字典
return render(request, 'scal.html', locals())
模板
计算器
FOR标签
语法:
{% for 变量 in 可迭代对象 %}
循环语句
{% empty %}
可迭代对象为空时的语句
{% endfor %}
for标签的内置变量
视图函数
def test_if_for(request):
dic = {}
dic['x'] = 10
dic['lst'] = ['TOM', 'jerry', 'nicos'] # 给一个lst让模板遍历
return render(request, 'test_if_for.html', dic)
模板
循环
{% for r in lst %} {% if forloop.first %}循环开始{% endif %} # 循环内使用内置变量{{forloop.counter}} - {{r}}
#内置变量获得list的index 和元素值 {% empty %} 如果lst为空,则返回“当前无数据” 当前无数据 {% endfor %}
效果



