Flask 的模版引擎使用的是Jinja2 Jinja2

示例代码(项目文件index.py):

from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route('/')

def index():
		return 'hello vilay'

@app.route('/user/<username>')
def profile(username):
		return render_template('user.html',name=username)

@app.route('/posts/<int:post_id>')
def posts(post_id):
		return 'Posts %s' % post_id

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

目录结构

比如你项目(index.py)在目录下/www/flask/,则在该目录下,新建模版目录templates,在该目录下新建模版文件user.html

user.html内容

<!DOCTYPE html>
<html>
<head>
		<title></title>
</head>
<body>
{% if name %}
	<h1>Hello {{ name }}!</h1>
{% else %}
	<h1>Hello, World!</h1>
{% endif %}
</body>
</html>

模版继承

后台我采用layui做ui框架。

首先,创建布局文件 templates/layout.html

<!DOCTYPE html>
<html>
<head>
	{% block head %}
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<title>{% block title %}{% endblock %}</title>
	<link rel="stylesheet" href="{{ url_for('static', filename='modules/layui/css/layui.css') }}">
	{% endblock %}
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
	<div class="layui-header">
		<div class="layui-logo">Vstary</div>
		<!-- 头部区域(可配合layui已有的水平导航) -->
		<ul class="layui-nav layui-layout-left">
			<li class="layui-nav-item"><a href="">控制台</a></li>
			<li class="layui-nav-item"><a href="">商品管理</a></li>
			<li class="layui-nav-item"><a href="">用户</a></li>
			<li class="layui-nav-item">
				<a href="javascript:;">其它系统</a>
				<dl class="layui-nav-child">
					<dd><a href="">邮件管理</a></dd>
					<dd><a href="">消息管理</a></dd>
					<dd><a href="">授权管理</a></dd>
				</dl>
			</li>
		</ul>
		<ul class="layui-nav layui-layout-right">
			<li class="layui-nav-item">
				<a href="javascript:;">
					<img src="http://t.cn/RCzsdCq" class="layui-nav-img">
					贤心
				</a>
				<dl class="layui-nav-child">
					<dd><a href="">基本资料</a></dd>
					<dd><a href="">安全设置</a></dd>
				</dl>
			</li>
			<li class="layui-nav-item"><a href="">退了</a></li>
		</ul>
	</div>

	<div class="layui-side layui-bg-black">
		<div class="layui-side-scroll">
			<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
			<ul class="layui-nav layui-nav-tree"  lay-filter="test">
				<li class="layui-nav-item layui-nav-itemed">
					<a class="" href="javascript:;">首页</a>
				</li>
				<li class="layui-nav-item">
					<a class="" href="javascript:;">内容管理</a>
					<dl class="layui-nav-child">
						<dd><a href="javascript:;">文章列表</a></dd>
						<dd><a href="javascript:;">分类列表</a></dd>
						<dd><a href="javascript:;">标签列表</a></dd>
						<dd><a href="javascript:;">评论列表</a></dd>
					</dl>
				</li>
				<li class="layui-nav-item">
					<a class="" href="javascript:;">数据统计</a>
					<dl class="layui-nav-child">
						<dd><a href="javascript:;">访问数据</a></dd>
					</dl>
				</li>
				<li class="layui-nav-item">
					<a href="javascript:;">系统设置</a>
					<dl class="layui-nav-child">
						<dd><a href="javascript:;">系统设置</a></dd>
						<dd><a href="javascript:;">管理员列表</a></dd>
						<dd><a href="javascript:;">后台日志</a></dd>
						<dd><a href="javascript:;">权限管理</a></dd>
					</dl>
				</li>
			</ul>
		</div>
	</div>

	<div class="layui-body">
		<!-- 内容主体区域 -->
		{% block content %}{% endblock %}
	</div>

	<div class="layui-footer">
		{% block footer %}
		© vstary.com
		{% endblock %}
	</div>
</div>
<script src="{{ url_for('static', filename='modules/layui/layui.js') }}"></script>
<script>
//JavaScript代码区域
layui.use('element', function(){
	var element = layui.element;

});
</script>
</body>
</html>

子模版使用

{% extends "layout.html" %}
{% block content %}
<form class="layui-form" action="">
	<div class="layui-form-item">
		<label class="layui-form-label">单行输入框</label>
		<div class="layui-input-block">
			<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input" value="{{ name }}">
		</div>
	</div>
</form>
{% endblock %}