1.main.py
# coding=utf-8
from flask import Flask, render_template, Markup
app = Flask(__name__)
# 加上这个装饰器只有每个模板中都可以直接使用这个函数 {{ sb(1,2)}}
@app.template_global()
def sb(a1, a2):
return a1 + a2
# 加上这个装饰器只有每个模板中都可以直接使用这个函数 {{ 1 | sb(1,2)}}
@app.template_filter()
def sb2(a1, a2, a3):
return a1 + a2 + a3
def gen_input(value):
# return "<input value=%s>" % value
return Markup("<input value=%s>" % value)
@app.route("/index")
def index():
context = {
"k1": "123",
"k2": [11,33,22],
"k3": {"name": "alex", "age": 12},
"k4": lambda x: x + 1,
"k5": gen_input # 临时函数, 当前模板可以使用
}
return render_template("index.html", **context)
@app.route("/index2")
def index2():
context = {
"k1": "123",
"k2": [11,33,22],
"k3": {"name": "alex", "age": 12},
"k4": lambda x: x + 1,
"k5": gen_input # 临时函数, 当前模板可以使用
}
return render_template("index.html", **context)
if __name__ == '__main__':
app.run(debug=True)
2.模板
{% extends "layout.html" %}
{% block content %}
<h1>{{ k1 }}</h1>
<h1>{{ k2.0 }}</h1>
<h1>{{ k3.name }}</h1>
<h1>{{ k4(9) }}</h1>
<h1>{{ k5(9)|safe }}</h1>
<h1>{{ sb(1,2) }}</h1>
<h1>{{ 1 | sb2(1,2) }}</h1>
{% endblock %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>start</div>
<div>
{% block content %} {% endblock %}
</div>
<div>end</div>
</body>
</html>