__init__.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. """
  4. @Contact : liuyuqi.gov@msn.cn
  5. @Time : 2023/10/04 11:09:00
  6. @License : Copyright © 2017-2022 liuyuqi. All Rights Reserved.
  7. @Desc : None
  8. """
  9. from flask import Flask, render_template
  10. from flask_cors import CORS
  11. from apps.config import config
  12. from .extensions import init_extensions, init_docs
  13. from .script import init_script
  14. from .views import init_blueprints
  15. import os
  16. def create_app(config_name="default") -> Flask:
  17. """ 创建 flask app
  18. :param config_name: 配置名称, 可选值: development, production, default
  19. :return: flask app
  20. """
  21. # banner()
  22. config_name = os.getenv("FLASK_CONFIG") or config_name
  23. app = Flask(config[config_name].BASE_DIR)
  24. CORS(app, supports_credentials=True, resources={r"/api/*": {"origins": "*"}})
  25. app.config.from_object(config[config_name]) # 读取配置
  26. config[config_name].init_app(app)
  27. init_extensions(app)
  28. init_blueprints(app)
  29. init_hook(app)
  30. configure_error_handlers(app)
  31. init_script(app)
  32. # pirnt all route
  33. # with app.test_request_context():
  34. # for rule in app.url_map.iter_rules():
  35. # print(rule, "---------------")
  36. return app
  37. def configure_error_handlers(app: Flask):
  38. @app.errorhandler(403)
  39. def forbidden_page(error):
  40. # return "Oops! You don't have permission to access this page.", 403
  41. return render_template("errors/403.html"), 403
  42. @app.errorhandler(404)
  43. def page_not_found(error):
  44. # return jsonify({
  45. # 'code': 404,
  46. # 'msg': 'Oops! Page Not Found'
  47. # }), 404
  48. return render_template("errors/404.html"), 404
  49. @app.errorhandler(500)
  50. def server_error_page(error):
  51. # return "Oops! Internal server error. Please try after sometime.", 500
  52. return render_template("errors/500.html"), 500
  53. # @app.context_processor
  54. # def context_processor():
  55. """ 上下文处理 """
  56. # if hasattr(g," user"):
  57. # return {"user": g.user}
  58. # else:
  59. # return {"user": None}
  60. # pass
  61. def init_hook(app: Flask):
  62. @app.after_request
  63. def after_request(response):
  64. return response
  65. @app.before_request
  66. def before_request():
  67. # user_id = session.get("user_id")
  68. # if user_id:
  69. # try:
  70. # user = Users.query.get(user_id)
  71. # g.user = user
  72. # except Exception as e:
  73. # print(e)
  74. # g.user = None
  75. pass
  76. def banner():
  77. Version = "V 1.0\n"
  78. info = "\t\t\t\t\t\t\t 阿sir,我真的是卧底 | By liuyuqi.gov@msn.cn | {}".format(Version)
  79. banner1 = """
  80. 4444444444444444444
  81. {}""".format(
  82. info
  83. )
  84. print(banner1)