蓝图
一. 不使用蓝图
目录结构
project_name # 项目名
-static # 静态文件
-templates # 模板
-user.html # 用户html页面
-views # 视图函数
-__init__.py # 里面定义了Flask的app对象
goods.py # 商品相关视图
user.py # 用户相关视图
app.py #启动文件
1. views/__ init __.py 文件
一定不要忘记注册文件
from flask import Flask
# 实例化得到对象
''' ★★★ 这里要注册对应的文件 templates 和 static ★★★'''
app = Flask(__name__, template_folder='../templates', static_folder='../static')
# 配置文件
app.debug = True
app.secret_key = 'jbejfbjsefaejfka'
''' ★★★ 这里将对应的视图函数导入, 为了执行对应的函数 ★★★'''
from . import user
from . import goods
2. app.py 文件 >>> 启动文件
from views import app
if __name__ == '__main__':
# 启动文件
app.run()
3. views/user.py 和 views/goods.py 文件
''' user.py '''
from flask import render_template, session
from . import app
@app.route('/user')
def user():
session['name'] = 'lqz'
return render_template('user.html')
''' goods.py '''
from . import app
@app.route('/goods')
def goods():
return 'goods'
二. 使用蓝图
2.1 蓝图小型项目
目录结构
project_name # 项目名
-src # 项目代码所在路径
-__init__.py # app对象创建的地方
-templates # 模板
-user.html
-static # 静态文件
-views # 视图函数存放位置
-user.py # 用户相关视图
-order.py # 订单相关视图
-manage.py # 启动文件
1 src/__ init __.py 文件
一定不要忘记注册蓝图
from flask import Flask
from .views.user import user_blue
app = Flask(__name__)
app.debug = True
''' 一定不要忘记注册蓝图 '''
app.register_blueprint(user_blue, url_prefix='/user')
2 manage.py 文件 >>> 启动文件
from src import app
if __name__ == '__main__':
app.run()
3. 视图文件 views.py
不是用 app 来装饰函数了, 而是用 蓝图 装饰函数
from flask import Blueprint, render_template
user_blue = Blueprint('user_blue', __name__)
@user_blue.route('/user')
def user():
return render_template('user.html')
2.1 蓝图大型项目
目录结构
project_name # 项目名字
-src # 项目代码所在位置
-__init__.py # src的init,falsk,app实例化
-settings.py # 配置文件
-app01 # 类似于django的admin app
-__init__.py # 蓝图初始化
-template # 模板
-backend.html
-static # 静态文件
-xx.jpg
-views.py # 视图层
-models.py # models层,后期咱们表模型
-app02
-__init__.py
-template
-static
-models.py
-views.py
-manage.py # 启动文件
1 src/__ init __.py 文件
from flask import Flask
from .app01 import app01
# 实例化得到app
app = Flask(__name__)
# 注册配置文件
app.config.from_pyfile('settings.py')
# 注册蓝图, url_prefix: 相当于路由分发
app.register_blueprint(app01, url_prefix='/app01')
2 manage.py 文件 >>> 启动文件
from src import app
if __name__ == '__main__':
app.run()
3 src/app01/__ init __.py 文件
1. 生成蓝图
2. 不要忘记将 视图文件 导入进来, 这样才能是使文件正常运行.
from flask import Blueprint
app01 = Blueprint(
'app01',
__name__,
'''
不要忘记注册静态文件, 以及模板文件
'''
template_folder='templates',
static_folder='static'
)
'''
不要忘记导入
'''
from . import views
4 视图文件 views.py
from flask import render_template
from . import app01
@app01.route('/user')
def user():
return render_template('user.html')
5 html 页面
1. 静态文件访问路径一定要注意, 根据注册蓝图中的 url_prefix='/app01'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>你好啊 又见面了</h2>
<img src="/app03/static/08.png">
</body>
</html>