Flask之模板

模板

1 基本用法

flask比django更加接近Python。

from flask import Flask,render_template

app = Flask(__name__,)

def func(arg):
    return '你好' + arg

@app.route('/md')
def index():
    nums = [11,222,33]
    return render_template('md.html',nums=nums,f=func)


if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>头</h1>
        {% block content %} {% endblock %}
    <h1>底</h1>
</body>
</html>
<form action="">
    <input type="text">
    <input type="text">
</form>
{% extends 'layout.html' %}


{% block content %}
    <h1>MD</h1>
    {% include 'form.html' %}
    {{ f("汪洋") }}
{% endblock %}

2 定义全局模板方法

from flask import Flask,render_template

app = Flask(__name__,)

@app.template_global() #  {{ func("赵海宇") }}
def func(arg):
    return '海狗子' + arg

@app.template_filter() # {{ "赵海宇"|x1("孙宇") }}
def x1(arg,name):
    return '海狗子' + arg + name


@app.route('/md/hg')
def index():
    return render_template('md_hg.html')

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

解析

1. flask和Django中的模板用法不一样,使用的是jinja2,它的用法更加的接近python语法,并且一些更加强大的功能;
2. 这个模板语法执行python的函数,可以将函数名传到模板中加括号执行,并且可以传入参数;
3. 它同样也支持模板的继承;
4. 可以定义全局应用的模板方法,# @app.template_global()
5. 可以写自定义过滤器; # @app.template_filter()
6. 注意:在蓝图中注册时候,应用返回只有本蓝图。
原文地址:https://www.cnblogs.com/zhufanyu/p/11938051.html