• 自定义flask启动与多模式使用(7)


    目录如下:

    安装自动启动模块

    pip install flask_script

    在manager中配置:

    # -*- coding: utf-8 -*-
    from application import app,db,manager
    from flask_script import Server,Command
    from www import *
    
    manager.add_command("runserver",Server(host = "127.0.0.1",use_debugger=True,use_reloader=True))
    
    @Command
    def create_all():
        from application import db
        from common.models.user import User
        db.create_all()
    manager.add_command("create_all",create_all)
    
    def main():
        manager.run()
    if __name__ == "__main__":
        # app.run(  )
        try:
            import sys
            sys.exit(main())
        except Exception as e:
            import traceback
            traceback.print_exc()

    application

    # -*- coding: utf-8 -*-
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    from flask_script import Manager
    import os
    app = Flask( __name__ )
    
    manager = Manager(app)
    app.config.from_pyfile("config/base_setting.py")
    # set ops_config=local,在次项目的根目录终端输入,否则找不到数据库
    if "ops_config" in os.environ:
        app.config.from_pyfile("config/%s_setting.py"%(os.environ['ops_config']))
    # print(os.environ)
    db = SQLAlchemy( app )

    多环境配置文件:

    # -*- coding: utf-8 -*-
    #公用配置
    DEBUG = True
    SQLALCHEMY_ECHO = False
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_ENCODING = "utf8mb4"
    SECRET_KEY = "123456imooc"
    
    # -*- coding: utf-8 -*-
    #生产环境配置文件
    from config.base_setting import *
    DEBUG = False
    
    # -*- coding: utf-8 -*-
    #本地开发环境配置文件
    from config.base_setting import *
    # SQLALCHEMY_ECHO = True
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    SQLALCHEMY_DATABASE_URI = "mysql://root:topass123@127.0.0.1/mysql"
    
    SECRET_KEY = "imooc123456"

    注册调试工具&拦截器

    # -*- coding: utf-8 -*-
    from application import app
    from controllers.index import index_page
    from flask_debugtoolbar import DebugToolbarExtension
    toolbar = DebugToolbarExtension(app)
    '''
    拦截器的使用
    '''
    from interceptors.Auth import *
    from interceptors.errorHandler import *
    app.register_blueprint( index_page,url_prefix = "/" )

    拦截器与错误页面处理:

    # -*- coding: utf-8 -*-
    from application import app
    
    @app.errorhandler( 404 )
    def error_404( e ):
        return "404 not found"
    
    
    # -*- coding: utf-8 -*-
    from application import app
    
    @app.before_request
    def before_request():
        app.logger.info( "--------before_request--------" )
        return
    
    @app.after_request
    def after_request( response ):
        app.logger.info("--------after_request--------")
        return response
  • 相关阅读:
    JDBC JAVA数据库插入语句
    uri与url
    struts标签库
    jdbc使用
    mysql安装配置
    Json Web Token
    实现一个简单vue
    vue v2.5.0源码-双向数据绑定
    vue v2.5.0源码-初始化流程
    webpack
  • 原文地址:https://www.cnblogs.com/topass123/p/13180094.html
Copyright © 2020-2023  润新知