zoukankan      html  css  js  c++  java
  • 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跑起来了!

     
    
    
    
    
    



  • 相关阅读:
    我理解的 js 异步成长总结
    小程序 获取地理位置-- wx.getLocation
    H5页面在微信端的分享
    ES6 我的总结学习
    5 分钟掌握 JS 实用窍门技巧,帮你快速撸码--- 删除数组尾部元素、E6对象解构、async/await、 操作平铺嵌套多维数组等
    小程序 video 层级,原生组件
    React 事件 传参
    微信小程序中如何使用setData --- 修改数组对象、修改对象
    流氓式--小程序用户授权 --- 小程序授权、获取用户信息
    深度学习的反向传播笔记
  • 原文地址:https://www.cnblogs.com/xussi/p/9573892.html
Copyright © 2011-2022 走看看