Flask框架之模板引擎

13 篇文章 0 订阅

Flask模板介绍

  • Flask使用的是Jinja2模板,所以其语法和Django无差别;可以参考Django语法学习
  • 用之前,也需要新建templates文件夹,在该文件夹下放置模板文件
  • Flask的模板系统也支持 母版的继承,块儿的继承,include等语法;同样也支持for、if等语法;
  • 也就是说Flask的模板系统同Django的模板系统基本相同
  • Jinja2模板的语法比Django模板的语法更接近python语法的使用

Flask模板的使用

视图文件:index.py

from flask import Flask,render_template,redirect,Markup

app = Flask(__name__)

def gen_input(value):
    return "<input value='%s' />" % value

def gen_input2(value):
    return Markup("<input value='%s' />" % value)   # Markup可以显示个人确认安全的内容到模板文件,不需要单独在模板文件中用safe

@app.template_global()
def global_func(x,y):
    '''
    通过@app.template_global()装饰器,将global_func(x,y)函数添加到模板的全局变量中,每个模板中都可以调用;不需要单独传递到前端
    :param x:
    :param y:
    :return:
    '''
    return x+y

@app.route('/index',methods=['GET','POST'])
def index():
    content = {
        'k1':888,
        'k2':[11,22,33],
        'k3':{'name':'mlg','age':18},
        'k4':lambda x:x+2,
        'k5':gen_input,
        'k6':gen_input2,
    }
    return render_template('index.html',**content)

@app.route('/index2')
def index2():
    return render_template('index2.html')


if __name__ == '__main__':
    app.run()

说明:

  1. jinja2的语法与Django的语法基本相同,可参考之前Django的模板内容学习具体知识点
  2. 视图函数往前端传递函数时不执行,所以我们可以自己通过往前端传递参数再调用
  3. @app.template_global()装饰器,可以把一个函数定义为模板的全局函数,在所有的模板文件中都能调用


模板文件

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>

<h1>{{k1}}</h1>
<h1>{{k2.0}}--{{k2[0]}}</h1>
<h1>{{k3.name}}--{{k3['name']}}--{{k3.get('name',888)}}</h1>
<h1>{{k4}}</h1>
<h1>{{k4(5)}}</h1>
<h1>{{k5(88)}}</h1> <!--防止XSS攻击,需要加 管道符+safe -->
<h1>{{k5(88)|safe}}</h1>
<h1>{{k6(99)}}</h1>


<h1>{{global_func(1,2)}}</h1>

</body>
</html>

index2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index2</title>
</head>
<body>

<h1>{{global_func(1,2)}}</h1>

</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值