• 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>

     

  • 相关阅读:
    Redis和Lombok的下载安装
    (五)模仿学习完成后台管理页面删除
    (六)模仿学习后台管理页面添加
    模拟学习动漫论坛合集
    (八)模仿学习展现可视化大屏
    基于C/S 结构的IM即时通讯软件下篇
    排序算法之基排
    qt学习001之运行对话框
    每日一练之大整数加法(P1255 数楼梯)
    每日算法之递推排序(P1866 编号)
  • 原文地址:https://www.cnblogs.com/shenjianping/p/13227933.html
Copyright © 2020-2023  润新知