Flask-模板

视图函数的作用是生成请求的响应,但是直接在视图函数里处理业务逻辑和表现逻辑,会显的代码混乱。

可以把表现逻辑移到模板中。

模板是包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文中才能知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染。为了渲染模板,Flask使用一个名为Jinja2的强大模板引擎

Flask使用jinja2模板引擎来渲染html页面。

1.需要 import render_template

2.在视图函数中调用 render_template,这个函数的第一个参数是模板文件名,其他参数为键值对。表示将值或者变量,传递给左侧模板中的变量。

@app.route('/')
def index():
    return render_template('index.html', name='tom', age=10)

变量

模板中使用{{name}}结构表示一个变量,这是一种特殊的占位符,告诉模板引擎这个值从渲染模板的数据中获取。 

jinja2 模板文件混合 html 语法与 jinja2 语法,使用分界符区分 html 语法与 jinja2 语法。有 5 种常见的分界符:

  • {{ 变量 }},将变量放置在 {{ 和 }} 之间;
  • {% 语句 %},将语句放置在 {% 和 %} 之间;
  • {# 注释 #},将注释放置在 {# 和 #} 之间;
  • ## 注释,将注释放置在 # 之后
  • 使用  {{ var }}  包围的标识符称为变量,模板渲染会将其替换为 Python 中的变量

<html>
{{ string }}

<ul>
    <li> {{ list[0] }}
    <li> {{ list[1] }}
    <li> {{ list[2] }}
    <li> {{ list[3] }}
</ul>

<ul>
    <li> {{ dict['name'] }}
    <li> {{ dict['age'] }}
</ul>
</html>

jinja2能是识别所有类型的变量,如:字符串、列表、字典,它们会被替换为同名的 Python 变量

from flask import Flask, render_template

app = Flask(__name__)


string = 'www.imooc.com'
list = ['www', 123, (1, 2, 3), {"name": "poloyy"}]
dict = {'name': 'zhangsan', 'age': True}


@app.route('/2')
def index2():
    return render_template('index2.html', string=string, list=list, dict=dict)


app.run(debug=True)

过滤器

变量的值可以使用过滤器修改。过滤器添加在变量名之后,二者之间以竖线分隔 

如{{name | lower}}表示,将name表里的值都小写

 控制结构

jinjia2提供了多种控制结构,可以改变模板的渲染流程。

用  {% 语句 %}  包围的语法块称为语句,jinja2 支持类似于 Python 的 if-else 判断语句

{% if cond %}
{% elif cond %}
{% else %}
{% endif %} 在模板中使用条件判断语句

 

jinja2 模板中,使用  {% 语句 %}  包围的语法块称为语句,jinja2 支持类似于 Python 的 for 循环语句

{% for item in iterable %}
{% endfor %}在模板中渲染一组元素,使用for循环

Jinja2还支持宏。宏类似于Python代码中的函数。

jinjia2还支持模板集成,类似于Python中的类。创建基模板和衍生模板。基模板包括区块,在衍生模板中重新定义区块。

参考:

Flask(8)- jinja2 模板入门 - 小菠萝测试笔记 - 博客园

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值