Flask提供的模板引擎为Jinja2,易于使用,功能强大。
模板仅仅是文本文件,它可以生成任何基于文本的格式(HTML、XML、CSV、LaTex 等等)。
它并没有特定的扩展名, .html 或 .xml 都是可以的。
模板包含 变量 或 表达式 ,这两者在模板求值的时候会被替换为值。模板中还有标签,控制模板的逻辑。
Jinja2文档:http://docs.jinkan.org/docs/jinja2/index.html

下面是一些使用实例,涉及模板继续、变量、赋值、循环、去空白、转义块、条件语句等。
1、在目录templates下面创建基本模板文件base.html

<!doctype html>
<html>
<head>
<title>{{title}}</title>
<style text="text/css">
ul{list-style:none}
li{padding-left:20px}
</style>
</head>
<body>
<div id="content">
<h4>子模板内容</h4>
{% block content %} {% endblock %}
</div>
</body>
</html>

2、同样在目录templates下面创建子模板文件test1.html

{% extends 'base.html' %}
{# 这里是注释,上面标签表示当前模板继承自模板base.html #} {% block content %} 变量:{{v1}}
<br /> 赋值:
{% set v2 = 100 %}
{{v2}}
<br /> 循环:
{% for item in items%}
{{ item.name }}
{% endfor %}
<br /> 去空白:
{% for item in items -%}
{{ item.name }}
{%- endfor %}
<br /> 转义块:
{% raw %}
<ul>
{% for item in list -%}
<li>{{ item }}</li>
{%- endfor %}
</ul>
{% endraw %} 条件语句:
{% for item in items%}
{% if item.name == '张三' %} {{item.name}}(管理员)
{% else %} {{item.name}}
{% endif %}
{% endfor %}
<br />

  <form method="post" action="/getFormValue">
    <input type="text" name="username" width="60" />
    <input type="submit" value="获取表单值" />
  </form>

{% endblock %}

3、在与目录templates平级目录上创建test1.py

from flask import Flask, render_template, request

app = Flask(__name__) 

@app.route('/test1')
def test1() -> 'html':
items = [{'name':'张三'},
{'name':'李四'},
{'name':'王五'}]
return render_template('test1.html',
title='test',
v1='变量值',
items = items) @app.route('/getFormValue', methods=['POST'])
def getFormValue() -> 'str':
username = request.form['username']
return username app.run(debug = True)

4、在命令提示符下执行py -3 test1.py

访问http://127.0.0.1:5000/test1,页面显示如下:

子模板内容
变量:变量值
赋值: 100
循环: 张三 李四 王五
去空白: 张三李四王五
转义块:
{% for item in list -%}
{{ item }}
{%- endfor %}
条件语句: 张三(管理员) 李四 王五

最新文章

  1. 无需FQ,自建本地CDN,秒上StackOverFlow!
  2. 如何静态添加toolbar到datagrid
  3. java内存图解
  4. Maven学习总结(三)——使用Maven构建项目
  5. Java中方法的覆写
  6. 让Flash背景透明兼容Firefox、IE 6和IE 7的代码
  7. HDU 4612 Warm up(手动扩栈,求树上哪两个点的距离最远)
  8. Swift观察者模式
  9. ios sdk的制作
  10. android获取系统wifi状态等
  11. 【Time系列一】datetime的妙用
  12. jquery的deferred异步
  13. SpiderMonkey js引擎的静态编译与使用
  14. OpenFlow交换机的实现总结
  15. JAVA简便解析json文件
  16. U型理论
  17. Docker系列之基础实践篇(上)
  18. SQL 游标的使用
  19. 原生JavaScript中动画与特效的实现原理
  20. Nginx优化详解-------超详细

热门文章

  1. linux中crontab任务调度
  2. 【SDUT】2019SDUTACM第一次选拔赛 F- X的追求道路
  3. FCC---Create Texture by Adding a Subtle Pattern as a Background Image
  4. Android Service 启动流程
  5. IDEA org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
  6. 团队项目之团队展示&amp;选题
  7. Docker系列01-容器初探
  8. TSPITR fails With RMAN-06553 (Doc ID 2078790.1)
  9. acwing 167. 木棒
  10. C++ 的 +,加号重载示例