Before
由于在项目的开始,我只会给出我的初步布局
Forum 项目文件夹
forum Python软件包
__init__.py
forum.py 主函数文件
config.py 配置文件
为了方便理解和写作,我并没有按照flask官网给出的建议,将主文件写在包的__init__.py中,而是新建一个forum.py进行主函数的创建.
随着项目的进行,我的结构也会逐步完善和扩大
主文件-forum.py
# Forum/forum/forum.py
from flask import Flask
from flask_cors import CORS
from forum.config import db
def create_app():
app = Flask(__name__)
app.config.from_object(__name__)
CORS(app, resources={r'/*': {'origins': '*'}}, supports_credentials=True,
template_folder='Flask/Forum/Templates') # 跨域请求资源配置(Vue3...)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/forum'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 配置是否追踪对象的修改(建议生产环境中设置为False以提高性能)
db.init_app(app)
@app.route('/')
def default():
return '首页'
return app
if __name__ == '__main__':
app = create_app()
app.run(debug=True)
这些代码在我的另一篇文章讲解过了,详情请看Flask_02-主函数文件的编写及蓝图注册
解释
这个主函数的主要功能就是创建一个应用工厂,在函数内,对flask应用进行配置,以及后面所有蓝图的创建,随着项目的进行,这个create_app主函数也会日益壮大.
@app.route
这个装饰器就是为其下的函数提高一个url,最基本的用法就是@app.route('/hello')
当访问http://127.0.0.1/hello
时,
会返回函数返回的内容
被@app.route()装饰的函数
被@app.route装饰的函数,其返回值不能为空,可以为其他任何东西(字符串,字典,html文件…)
config.py
# Forum/forum/config.py
# SQLAlchemy定义
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
解释
为了方便调用和更清晰的编写主函数外的功能或者公共数据,我创建了config.py,也许在部署时会遇到同名问题,届时我会对这个文件进行重构,虽然该文件可能并不符合flask官网的标准,但是对项目的运行无伤大雅.同样的,随着项目的进行,这个配置文件也会随着项目的进行逐渐扩大代码规模.