jinjia2模板渲染引擎
我们访问的页面需要在用户访问时根据程序逻辑动态生成,模板就是包含变量和运算逻辑的HTML或其他格式的文本,执行这些变量替换和逻辑计算工作的过程叫做渲染;
按照默认,Flask会从程序实例所在同级目录的templates文件夹中寻找模板(创建的模板可以存放在新建的templates文件夹中)
模板基本语法
三种常用定界符:
模板中使用的变量需要在渲染的时候传递进去。
在templates目录下创建一个index.html文件作为模板。
index.html模板
<!DOCTYPE html> <html lang="en"> <head> <Meta charset="utf-8"> <title>{{ name }}'s Watchlist</title> </head> <body> <h2>{{ name }}'s Watchlist</h2> {# 使用 length 过滤器获取 movies 变量的长度 #}
<p>{{ movies|length }} Titles</p> <ul>
{% for movie in movies %} {# 迭代 movies 变量 #} <li>{{ movie.title }} - {{ movie.year }}</li> {# 等同于 movie['title'] #} {% endfor %} {# 使用 endfor 标签结束 for 语句 #}
</ul> <footer> <small>© 2018 <a href="http://helloflask.com/tutori al">HelloFlask</a></small> </footer> </body> </html>
为模板准备一些虚拟数据:
name = 'fuyuan' movies = [{'title':'流浪地球','year':'2019'}, {'title':'哥斯拉2','year':'2019'}, {'title':'唐人街探案2','year':'2020'}, {'title':'复仇者联盟2','year':'2020'}, {'title':'影子特工队','year':'2019'}, {'title':'星球大战3','year':'2018'}]
通过使用render_template( )函数可以把模板渲染出来,传入的参数为模板的文件名,即上面的’index.html’,还有模板中需要传入的参数;
#--coding:utf-8 -- from flask import Flask,render_template app = Flask(__name__) name = 'fuyuan' movies = [{'title':'流浪地球','year':'2019'}, {'title':'哥斯拉2','year':'2019'}, {'title':'唐人街探案2','year':'2020'}, {'title':'复仇者联盟2','year':'2020'}, {'title':'影子特工队','year':'2019'}, {'title':'星球大战3','year':'2018'}] @app.route('/index') def index(): return render_template('index.html',name = name,movies = movies) if __name__ == '__main__': app.run(host='0.0.0.0',debug= True)
在render_template函数中左边的name/movies是index.html模板中使用的变量名,右边的name/movies是该变量实际指向的对象,这里模板中name变量实际指向的是虚拟数据中name字符串,模板中movies变量实际指向的是虚拟数据中movies列表,当然模板中传入的数据结构也可包含,元祖、字典、函数等。
运行上述代码,在浏览器中输入http://localhost:5000/index,浏览器返回如下主页。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。