zoukankan      html  css  js  c++  java
  • 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>

     

  • 相关阅读:
    [spoj DISUBSTR]后缀数组统计不同子串个数
    [poj 3261]后缀数组+滑窗最小值
    [poj 1743]差分+后缀数组
    [codechef MEXDIV]Mex division
    JavaScript中的数组和对象 增删遍
    ajax返回的值有两种方法,一种是把async:true改为false。 另一种是回调函数。
    使用smart-npm和npm安装完毕之后发现 不是内部命令和外部命令!
    移动端rem设置,自动更改html<font-size>
    总结js创建object的方式(对象)
    用css方法 可以实现多行 超出宽度 出点点点号
  • 原文地址:https://www.cnblogs.com/shenjianping/p/13227933.html
Copyright © 2011-2022 走看看