• flask之模板


    模板的使用

    Flask使用的是Jinja2模板,所以其语法和Django无差别

    1.每一个模板中都可以调用的函数

    @app.template_global()
    def ad(a1,a2):
        """
        每个模板中可以调用的函数
        :param a1:
        :param a2:
        :return:
        """
        return a1+a2

    2.为了防止xss攻击,加了验证,页面上显示的是字符串的形式,我们不想让他这样显示,所以有两种方式

    方式一:在后端导入Markup

    from flask import Flask,render_template,redirect,jsonify,make_response,Markup
    def gen_input(value):
        return Markup("<input value='%s'/>" %value)

    方式二:

    在前端加|safe

       <h1>{{k5(99)|safe}}</h1>

    3.模板继承

    和django的一样,extends

    4.举例

    s1.py

    from flask import Flask,render_template,redirect,jsonify,make_response,Markup
    
    app = Flask(__name__)
    
    @app.template_global()
    def ad(a1,a2):
        """
        每个模板中可以调用的函数
        :param a1:
        :param a2:
        :return:
        """
        return a1+a2
    
    
    def gen_input(value):
        # return Markup("<input value='%s'/>" %value)
        return "<input value='%s'/>" %value
    @app.route('/index',methods=['GET','POST'])
    def index():
        context = {
            'k1':123,
            'k2':[11,22,33],
            'k3':{'name':'oldboy','age':73},
            'k4':lambda x:x+1,
            'k5':gen_input,
    
        }
        return render_template('index.html',**context)
    
    
    @app.route('/x2',methods=['GET','POST'])
    def order():
        context = {
            'k1':123,
            'k2':[11,22,33],
    
        }
        return render_template('order.html',**context)
    
    if __name__ == '__main__':
        app.run()

    templates

      layout.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div>头部</div>
    <div>
        {% block content%}
        {% endblock%}
    </div>
    <div>底部</div>
    </body>
    </html>

    index.html

    {% extends 'layout.html'%}
    {% block content%}
       <h1>{{k1}}</h1>
       <h1>{{k2.0}} {{k2[1]}}</h1>
       <h1>{{k3.name}} {{k3['age']}} {{k3.get('name',888)}} </h1>
       <h1>{{k4(66)}}  </h1>
       <!--<h1>{{k5(99)}}  </h1>-->
    
       <h1>{{ad(1,2)}}  </h1>
    
    {% endblock %}

    order.html

    {% extends 'layout.html'%}
    {% block content%}
     <h1>{{ad(1,2)}}  </h1>
    {% endblock %}
  • 相关阅读:
    Oracle学习 第29天 存储过程生成报表
    Oracle学习 第28天 存储过程输出结果集
    Python学习 第9天 连接FTP和数据库
    Bat脚本学习-6:Oracle自动备份还原脚本
    Bat脚本学习-5:Oracle自动备份还原脚本
    Bat脚本学习-4:Oracle自动备份还原脚本
    Vue学习 第2天 又看了个教程,加深理解
    Vue学习 第1天 初始Vue及MVVM
    下半年加油,好久没上来冒个泡了
    Python学习 第8天 打包exe
  • 原文地址:https://www.cnblogs.com/1996-11-01-614lb/p/8975787.html
Copyright © 2020-2023  润新知