目录
一、为什么要进行项目拆分?
由于之前的项目比较简单,路由和视图函数都比较少,并没有觉得哪里不适合。如果后期开发相对大型一点的项目,会使用到大量的路由和视图,如果不进行项目拆分,就不好管理,因此需要对项目进行拆分。
二、项目拆分步骤
1.新建文件夹和文件
- 在项目根目录下建立App应用
- 在App文件夹中,将原来根目录下的templates,static文件移入App应用中
- 在App文件夹中,新建views.py文件,用来编写路由和视图
- 在App文件夹中,新建__init__.py文件,是初始化文件,用来创建Flask对象
- 在App文件夹中,新建models.py文件,用来编写数据模型
2.编写__init__.py文件
将原先app.py中的创建app的内容写在__init__.py文件中,但是需要稍微修改一下,定义一个create_app() 的函数 ,返回一个app对象,其作用是创建app,因此在app.py文件中只需调用该函数进行创建app对象即可。create_app()函数中还需使用app.register_blueprint(blueprint=blue)注册蓝图,与views.py 中的蓝图进行绑定。
代码如下:
# __init__.py:是初始化文件,创建Flask应用
from flask import Flask
from .views import blue
# 创建app
def create_app():
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(blueprint=blue)
return app
3、 编写views.py文件
views.py是编写路由和视图的文件,就是将原先app.py文件中的路由和视图板块移到此处。在编写路由时需使用到app对象,但是又不可以再次创建一个新的app,对象就不一样了。因此需要引入蓝图,通过蓝图代替app对象。首先需要导入flask中的Blueprint类,然后进行蓝图创建,其中有两参数:蓝图的名称、__name__,作用如下:
- user:蓝图的名称,自己定义的,反向解析的时候需要用到
- __name__:表示当前模块
代码如下:
from flask import Blueprint
# 蓝图
blue = Blueprint('user', __name__)
# user:蓝图的名称,自己定义的,反向解析的时候需要用到
# __name__:表示当前模块
@blue.route('/')
def index():
return 'infdex'
4、修改app.py文件
app.py文件就只有通过create_app()函数创建app,以及运行项目中两部分了。
代码如下:
from App import create_app #比较特殊,直接导入函数
#创建一个app
app=create_app()
if __name__=='__main__':
app.run(debug=True)
总结
以上就是今天所学内容,本文主要介绍了Flask项目的拆分,以便我们更好的管理代码。