#!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Contact : liuyuqi.gov@msn.cn @Time : 2023/10/04 11:09:00 @License : Copyright © 2017-2022 liuyuqi. All Rights Reserved. @Desc : None """ from flask import Flask, render_template from flask_cors import CORS from apps.config import config from .extensions import init_extensions, init_docs from .script import init_script from .views import init_blueprints import os def create_app(config_name="default") -> Flask: """ 创建 flask app :param config_name: 配置名称, 可选值: development, production, default :return: flask app """ # banner() config_name = os.getenv("FLASK_CONFIG") or config_name app = Flask(config[config_name].BASE_DIR) CORS(app, supports_credentials=True, resources={r"/api/*": {"origins": "*"}}) app.config.from_object(config[config_name]) # 读取配置 config[config_name].init_app(app) init_extensions(app) init_blueprints(app) init_hook(app) configure_error_handlers(app) init_script(app) # pirnt all route # with app.test_request_context(): # for rule in app.url_map.iter_rules(): # print(rule, "---------------") return app def configure_error_handlers(app: Flask): @app.errorhandler(403) def forbidden_page(error): # return "Oops! You don't have permission to access this page.", 403 return render_template("errors/403.html"), 403 @app.errorhandler(404) def page_not_found(error): # return jsonify({ # 'code': 404, # 'msg': 'Oops! Page Not Found' # }), 404 return render_template("errors/404.html"), 404 @app.errorhandler(500) def server_error_page(error): # return "Oops! Internal server error. Please try after sometime.", 500 return render_template("errors/500.html"), 500 # @app.context_processor # def context_processor(): """ 上下文处理 """ # if hasattr(g," user"): # return {"user": g.user} # else: # return {"user": None} # pass def init_hook(app: Flask): @app.after_request def after_request(response): return response @app.before_request def before_request(): # user_id = session.get("user_id") # if user_id: # try: # user = Users.query.get(user_id) # g.user = user # except Exception as e: # print(e) # g.user = None pass def banner(): Version = "V 1.0\n" info = "\t\t\t\t\t\t\t 阿sir,我真的是卧底 | By liuyuqi.gov@msn.cn | {}".format(Version) banner1 = """ 4444444444444444444 {}""".format( info ) print(banner1)