flask划分目录flask不使用蓝图划分目录123456789101112131415161718192021222324252627282930313233目录结构flask_study static templates views __init__.py order.py #app文件 user.py #app文件 main.py #main.py 项目的入口from views import app #从views导入app对象if __name__ == '__main__': app.run()#__init__.py 在这里实例化app对象from flask import Flask,url_for,redirect,viewsapp = Flask(__name__,template_folder='../templates')app.debug=True#user.pyfrom . import app #导入app对象@app.route('/user_index/')def user_index(): return '我是user接口的首页'只有上述代码是不能执行的,因为这样子只执行了__init__的代码,但是没有将user.py中的代码执行,因此我们需要在__init__.py中将app导入#__init__.pyfrom . import orderfrom . import user flask蓝图123456789101112131415161718192021222324252627282930313233上述代码虽然可以执行,但是容易出现循环导入的问题,因此flask官方提供了一种方法,帮助我们划分目录,这就是蓝图使用步骤1.实例化对象#user.py from flask import Blueprint user = Blueprint('user', __name__) #第一个参数是蓝图的名称,任意写2.在app中注册#__init__.py from views.user import user #将app应用中实例化的对象导入过来 app.register_blueprint(user) #注册 3.写路由#user.py @user.route('/user_index/') def user_index(): return '我是user接口的首页' 4.其余知识点 1.可以指定路由进来时的前缀,添加一个url_prefix即可 app.register_blueprint(user, url_prefix='/user') 2.若app划分为一个文件夹,我们可以在这个文件夹中有自己的templates和static文件夹 web = Blueprint('web',__name__,template_folder='templates',static_folder='static') 3.蓝图对象有自己的请求扩展,你只有访问这个蓝图的路径时才会触发 web = Blueprint('web', __name__,template_folder='templates',static_folder='static') @web.before_request def web_request(): print('web request') @web.after_request def web_after(response): print(response) return response