Flask 模版

模版基础

1、模板的使用

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

2、自定义模板方法

Flask中自定义模板方法的方式和Bottle相似,创建一个函数并通过参数的形式传入render_template,如:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>自定义函数</h1>
    {{ww()|safe}}

</body>
</html>
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask,render_template
app = Flask(__name__)
 
 
def wupeiqi():
    return '<h1>Wupeiqi</h1>'
 
@app.route('/login', methods=['GET', 'POST'])
def login():
    return render_template('login.html', ww=wupeiqi)
 
app.run()

模版引擎

template.py

from flask import Flask, render_template
from markupsafe import Markup

app = Flask(__name__)
app.debug = True


# 定义全局中,每个模版都可以调用kkk这个函数
@app.template_global()
def kkk(a1, a2):
    return a1 + a2


def gen_input(value):
    # 使用Markup对象来标记文本为安全文本,防止再次转义
    return Markup('<input  value="%s" />' % value)


@app.route('/', methods=['GET', 'POST'])
def index():
    coutext = {
        'k1': 123,
        'k2': [111, 222, 333],
        'k3': {'name': 'xiaoming', 'age': 18},
        'k4': lambda x: x + 1,
        'k5': gen_input
    }
    return render_template('index.html', **coutext)


@app.route('/order', methods=['GET', 'POST'])
def order():
    coutext = {
        'k1': 123,
        'k2': [111, 222, 333],

    }
    return render_template('order.html', **coutext)


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

继承模版 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>
    <h2>{{k2.0}}  {{k2[0]}}</h2>
    <h3>{{k3.name}}  {{k3['name']}}  {{k3.get('name',888)}}</h3>
    <h4>{{k4(66)}}</h4>
<!--    <h4>{{k5(66)|safe}}</h4>-->
    <h5>{{k5(66)|safe}}</h5>
    <h1>{{kkk(35,46)}}</h1>
{% endblock %}

order.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>order模版</title>
</head>
<body>
    <h1>{{k1}}</h1>
    <h1>{{k2.0}}</h1>
    <h1>{{kkk(35,46)}}</h1>
</body>
</html>
posted @ 2023-09-14 11:20  沈忻凯  阅读(25)  评论(0)    收藏  举报