七天学会flask---模板-行语句(第一天)

Posted 家乐福的搬砖日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七天学会flask---模板-行语句(第一天)相关的知识,希望对你有一定的参考价值。

flask模板技术---行语句

flask行语句,可以让模板的代码编写更加容易便捷,不然总是用% ... % 来标识挺麻烦的, 使用行语句首先需要进行设置

app.jinja_env.line_statement_prefix = \'#\'

先来看一下不使用行语句时如何写一段for循环

% for i in range(10) %
    <p> i </p>
% endfor %

而一旦开启了行语句,你就可以这样写了

# for i in range(10):
    <p> i </p>
# endfor

我已经设置了行语句的前缀为# ,在模板里,只要一行代码里去掉前面的空白符后是以# 开头的,就视为行语句。

行语句的代码和我们平时写python代码一样,不用那么麻烦的用% 和 % 进行标记了。

若有未闭合的圆括号、花括号或方括号,行语句可以跨越多行:

<ul>
# for href, caption in [(\'index.html\', \'Index\'),
                        (\'about.html\', \'About\')]:
    <li><a href=" href "> caption </a></li>
# endfor
</ul>

 

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 -



以上是关于七天学会flask---模板-行语句(第一天)的主要内容,如果未能解决你的问题,请参考以下文章

七天学会Python基础-第七天3/3-自定义模块和random模块

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

2017 10 1国庆培训七天总结(提高组),第一天(STL)。

「七天自制PHP框架」第一天:路由与控制器

寒假每日一题总结(第七天)

七天入门Go语言Goland && Golang 的安装与配置 | 第一天