微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Web开发之Flask框架二

jinjia2模板渲染引擎

我们访问的页面需要在用户访问时根据程序逻辑动态生成,模板就是包含变量和运算逻辑的HTML或其他格式的文本,执行这些变量替换和逻辑计算工作的过程叫做渲染;

按照认,Flask会从程序实例所在同级目录的templates文件夹中寻找模板(创建的模板可以存放在新建的templates文件夹中)

 

模板基本语法

 

三种常用定界符:

  • {{ … }} 用来标记变量。
  • {% … %} 用来标记语句,比如if语句,for语句等。
  • {# … #} 用来写注释。

模板中使用的变量需要在渲染的时候传递进去。

在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>&copy; 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] 举报,一经查实,本站将立刻删除。

相关推荐