• 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跑起来了!

     
    
    
    
    
    



  • 相关阅读:
    centos6.5 升级安装pcre 8.39版本
    解决MongoDB磁盘IO问题的三种方法
    javascript 利用匿名函数对象给你异步回调方法传参数
    spring mvc fastJson 自定义类型转换(返回数据) 实现对ObjectId类型转换
    Java BigDecimal 加减乘除运算
    OKHTTP 3.0
    Chrome 开发者工具中的命令菜单
    vuex 基础:教程和说明
    RxJS 简介:可观察对象、观察者与操作符
    CreateJs入门必知必会
  • 原文地址:https://www.cnblogs.com/xussi/p/9573892.html
Copyright © 2020-2023  润新知