flask再学习-重构!启动!

1.打造MVC框架:

common/libs:放置一些功能公用的方法。

common/models:放置ORM模型

config:配置文件属性

web/controllers:视图层,处理url和api

web/interceptors:拦截器,用于页面请求,api请求,错误的拦截

web/static:静态资源的存放

web/templates:页面模板的存放

application.py:重构Flask核心对象

manager.py:管理器

www.py:url和api蓝图路由管理器

 

2.重构我们的Flask:

class Application(Flask):  # 重载flask对象,配置分步加载
    def __init__(self, import_name, template_folder=None, root_path=None):  # 重载初始化方法,重置template位置
        super(Application, self).__init__(import_name, template_folder=template_folder, root_path=root_path,
                                          static_folder=None)  # 重构,改变template,static等默认值
        self.config.from_pyfile('config/base_setting.py')  # 加载配置
        # export ops_config=local(设置环境变量加载不同的配置文件)
        if "ops_config" in os.environ:  # 加载配置文件
            self.config.from_pyfile('config/%s_setting.py' % os.environ['ops_config'])

        db.init_app(self)  # 注册到app

db = SQLAlchemy()  # 初始化orm对象
app = Application(__name__, template_folder=os.getcwd()+"/web/templates/", root_path=os.getcwd())
manager = Manager(app)  # 将App进行包装

在flask源码中,构造方法需要以下参数:

   def __init__(
        self,
        import_name,
        static_url_path=None,
        static_folder='static',
        static_host=None,
        host_matching=False,
        subdomain_matching=False,
        template_folder='templates',
        instance_path=None,
        instance_relative_config=False,
        root_path=None
    ):
import_name:对象名
static_url_path=None:静态url地址
static_folder:静态文件目录
static_hos:静态主机 template_folder='templates':模板地址
root_path:根目录

我们重载了对象名,模板地址,root_path,静态文件目录

3.在manager.py中启动项目:

from application import app, manager
from flask_script import Server

#
web server,自定义命令,runserver自定义server命令,里面是参数,可以取代app.run() manager.add_command("runserver", Server(host='0.0.0.0', port=app.config['SERVER_PORT'], use_debugger=True, use_reloader=True)) def main(): manager.run() # 使用自定义启动方法,启动为manager.py runserver

if __name__ == '__main__': try: import sys sys.exit(main()) except Exception as e: import traceback # 打印所有错误信息 traceback.print_exc()
这里使用了flask_script申明扩展flask能力,Server自定义命令,指定地址,端口,调试模式等,我们就可以用runserver启动
关于加载本地配置还是线上配置,使用export指定脚本变量就可以选择了。默认加载本地

ok!flask跑起来了!

 






原文地址:https://www.cnblogs.com/xussi/p/9573892.html