Flask Jinja2模板引擎实战:继承、变量与逻辑控制详解
本文详细介绍Flask内置的Jinja2模板引擎,涵盖模板文件规范、变量传递、赋值、循环遍历、空白控制及条件判断等核心功能。通过完整的代码示例,演示如何创建基模板并实现子模板继承,同时展示Flask路由与模板渲染的实际应用,帮助开发者快速掌握Flask前端交互逻辑。
Jinja2模板引擎基础概述
Flask框架内置了Jinja2作为其模板引擎,该引擎不仅易于上手,且具备强大的功能特性。
模板本质上是文本文件,能够生成任何基于文本格式的内容,例如HTML、XML、CSV或LaTex等。
模板文件没有强制的特定扩展名,使用.html或.xml等后缀均可。
模板中允许包含变量或表达式,这些内容在模板求值时会被替换为具体的值。此外,模板还支持标签,用于控制模板的逻辑流程。
Jinja2官方文档地址:http://docs.jinkan.org/docs/jinja2/index.html
下文将通过具体实例,展示模板继承、变量处理、赋值操作、循环结构、空白去除、转义块以及条件语句的使用方法。
第一步,在项目的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>
第二步,同样在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 %}
第三步,在与templates目录平级的目录下创建Python脚本test1.py。
Flask路由配置与模板渲染
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)
第四步,在命令行环境中执行命令py -3 test1.py以启动服务。
运行结果与页面展示
访问地址http://127.0.0.1:5000/test1,页面显示效果如下:
子模板内容 变量:变量值 赋值: 100 循环: 张三 李四 王五 去空白: 张三李四王五 转义块: {% for item in list -%} {{ item }} {%- endfor %} 条件语句: 张三(管理员) 李四 王五
以上内容为本文的全部介绍,希望能为读者的学习提供有益帮助,同时也欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









