模版渲染
使用 render_template 来渲染模板
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/blog/<blog_id>')
def blog_detail(blog_id):return render_template('blog_detail.html', blog_id=blog_id, username='核')if __name__ == '__main__':app.run()
在 templates 中创建 blog_detail.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>博客详情</title>
</head>
<body>
<p>用户名是:{{ username }}</p>
<h1>你访问的博客是:{{ blog_id }}</h1>
</body>
</html>
模版访问对象属性
from flask import Flask, render_templateapp = Flask(__name__)class User:def __init__(self, username, email):self.username = usernameself.email = email@app.route('/')
def hello_world():user = User(username='宇宙核', email='xxx@qq.com')person = {'username': '张三','email': 'zhangsan@qq.com'}return render_template('index.html', user=user, person=person)if __name__ == '__main__':app.run()
在 templates 中创建 index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试</title>
</head>
<body>
<h1>首页</h1>
<div>{{ user.username }} / {{ user.email }}</div>
<div>{{ person['username'] }} / {{ person.username }}</div>
</body>
</html>
过滤器
from flask import Flask, render_template
from datetime import datetimeapp = Flask(__name__)# 自定义过滤器,以注册一个时间格式化的过滤器为例
def datetime_format(value, format='%Y年%m月%d日 %H:%M'):return value.strftime(format)
# 可通过 app.add_template_filter 来把函数注册成 Jinja2 能用的过滤器,下面把这个过滤器的名字设置为 dformat
app.add_template_filter(datetime_format, 'dformat')class User:def __init__(self, username, email):self.username = usernameself.email = email@app.route('/filter')
def filter_demo():user = User(username='宇宙核', email='xxx@qq.com')mytime = datetime.now()return render_template('filter.html', user=user, mytime=mytime)if __name__ == '__main__':app.run()
在 templates 中创建 filter.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>过滤器使用demo</title>
</head>
<body>
<div>{{ user.username }} 名字长度为:{{ user.username|length}}</div> <!-- length 返回长度 -->
<div>{{ mytime|dformat }}</div>
</body>
</html>