Flask之模板系统

Posted shenjianping

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask之模板系统相关的知识,希望对你有一定的参考价值。

一、模板的基础方法

Flask使用的是Jinja2模板,其语法与Django框架中模板系统一样,与模板相关联的方法有:

  • render_template
  • Markup
  • jsonify
  • make_response
  • macro 

二、基础方法的使用

1、render_template

该方法是对模板的渲染,相当于django中的render方法:

from flask import Flask, render_template

app = Flask(__name__)


@app.route(/)
def index():
    data = [
        {username: 张三, age: 12},
        {username: 李四, age: 22},
    ]
    return render_template(index.html, data=data)


if __name__ == __main__:
    app.run()
技术图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{data}}
{% for obj in data %}
  {{ obj }}
{% endfor %}
</body>
</html>
index.html

2、Markup

Markup其实相当于django中的make_safe,在Jinja2的模板中可以是safe对html进行转义,同时flask中也可以使用Markup:

from flask import Flask, render_template, Markup

app = Flask(__name__)


def html():
    html_str = Markup("<a href=‘#‘>点击我</a>")
    return html_str


@app.route(/)
def index():
    return render_template(index.html, func=html)


if __name__ == __main__:
    app.run()
技术图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{func()}}
</body>
</html>
index.html

 3、jsonify

 顾名思义返回的数据时json数据,该方法可以用作返回接口数据。

from flask import Flask, jsonify

app = Flask(__name__)


@app.route(/)
def index():
    return ({a: 1, b: 2})  # 或者 return jsonify(a=‘1‘,b=‘2‘)


if __name__ == __main__:
    app.run()

4、make_response

之前的render_template是可以直接返回数据给模板的,但是假如你想在返回页面之前对response在进行一下加工,比如加入cookie、headers之类的参数,该方法就可以使用。

from flask import Flask, render_template, make_response

app = Flask(__name__)


@app.route(/)
def index():
    response = make_response(render_template(index.html, num=56))
    response.headers[X-Parachutes] = parachutes are cool
    return response


if __name__ == __main__:
    app.run()

5、macro

 使用在html模板中,可以在该参数范围内定义一个代码块,并且可进行调用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% macro func(name) %} <!--定义func函数,有name形参-->
    {{ name }}
{% endmacro %}

{{ func(‘小明‘) }}  <!--调用func函数,并且传递参数-->
</body>
</html>

 

 

 

 

 

以上是关于Flask之模板系统的主要内容,如果未能解决你的问题,请参考以下文章

Flask模板宏的概念和基本使用

Flask框架从入门到精通之模板宏(十九)

12_关于flask中的宏

Flask框架从入门到精通之模板宏(十九)

Flask框架从入门到精通之模板宏(十九)

Flask框架从入门到精通之模板导入与继承(十八)