zoukankan      html  css  js  c++  java
  • 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 %}
  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/1996-11-01-614lb/p/8975787.html
Copyright © 2011-2022 走看看