vlambda博客
学习文章列表

Flask干货:Jinja2模板中的if和for语句



Flask干货:Jinja2模板中的if和for语句


图 | 源网络
文 | 5号程序员



01


在上一篇文章中,小明求婚成功,大家都以为和小红过上了令人向往的幸福生活。害,但结婚后的小明却过上了苦日子,因为机智的小红居然偷偷学会了编程!!!


小红编写了下面这个抽奖程序,每天让小明“自愿”抽奖!


Flask干货:Jinja2模板中的if和for语句



02


沃德天!


这到底是怎么回事?!?!


让我们来看看python源代码:

from flask import Flask #导入模块from flask import render_templateimport random
app = Flask(__name__)
@app.route('/') #定义第一页视图def choice(): rad = random.randint(1, 4) #产生1~4范围内的随机整数 return render_template('choice.html', number=rad)
if __name__ == '__main__': app.run(debug=True)


好像看不出什么猫腻,就是从1~4中随机选一个数字嘛,再看看网页的源代码:

Flask干货:Jinja2模板中的if和for语句

源代码:
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>中奖提示!</title></head><body>{% if number==1 %} <h1>恭喜!您抽得一等奖,获得为小红购买一个包包的机会!(●'◡'●)</h1>{% elif number==2 %} <h1>恭喜!您抽得二等奖,获得为小红购买一支口红的机会!(●'◡'●)</h1>{% elif number==3 %} <h1>恭喜!您抽得三等奖,获得为小红购买一个冰淇淋的机会!(●'◡'●)</h1>{% else %} <h1>很遗憾!您未中奖!(;′⌒`)</h1>{% endif %}<h1>中奖数字为:{{number}}</h1></body></html>

嚯!中奖概率75%!!!如果是数字1、2、3都能中奖!

Flask干货:Jinja2模板中的if和for语句


原来在前端的Jinja2语法中,if可以进行判断:存在的参数是否满足条件。基本语法如下:

 

Flask干货:Jinja2模板中的if和for语句


随机抽取的数字被赋值给number,通过number就能判断出几等奖!如果不中奖,还可以通过刷新页面奖励一次!


Flask干货:Jinja2模板中的if和for语句



03


小明也不甘示弱!立马写出一份价格表!


不给钱怎么买?!?!


Flask干货:Jinja2模板中的if和for语句


看看python的源代码:
from flask import Flask #导入模块from flask import render_template
app = Flask(__name__)
@app.route('/') #定义第一页视图def choice(): goods = [{'name':'包包', 'price':'500元'}, \ {'name':'口红', 'price':'300元'}, \ {'name':'冰淇淋', 'price':'20元'}] return render_template('goods.html', **locals())
if __name__ == '__main__': app.run(debug=True)
再看看网页goods.html源代码:

Flask干货:Jinja2模板中的if和for语句

源代码:
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>价格表</title></head><body><table> <thead> <th>商品名称</th> <th>商品价格</th> </thead> <tbody> {% for good in goods %} <tr> <td>{{good.name}} </td> <td>{{good.price}} </td> </tr> {% endfor %} </tbody></table></body></html>

哦~原来 跟python很像,只是需要添加{% %}和{% endxx %}。

如果能将两种语言互相引用,那在大型项目中就方便多了!只要确定了name和price,不就可以添加无数个文件了嘛?

Flask干货:Jinja2模板中的if和for语句




04



那除了if和for相似外,还有没有其他相似的地方呢?

当然有,比如宏定义,其实就是python中的函数。将在下一篇文章中详细说明~


期待吗?

你确定不关注我一波?



Flask干货:Jinja2模板中的if和for语句


- END -