__init__.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from flask import Flask, render_template
  2. from flask_moment import Moment
  3. from flask_sqlalchemy import SQLAlchemy
  4. from config import config
  5. from flask_login import LoginManager
  6. import flask_excel as excel
  7. from flask.json import JSONEncoder
  8. from datetime import datetime, date
  9. class CustomJSONEncoder(JSONEncoder):
  10. def default(self, obj):
  11. if isinstance(obj, datetime):
  12. return obj.strftime('%Y-%m-%d %H:%M:%S')
  13. elif isinstance(obj, date):
  14. return obj.strftime('%Y-%m-%d')
  15. else:
  16. return JSONEncoder.default(self, obj)
  17. loginmanager = LoginManager()
  18. loginmanager.session_protection = 'strong'
  19. loginmanager.login_view = 'base.login'
  20. moment = Moment()
  21. db = SQLAlchemy()
  22. def create_app(config_name):
  23. app = Flask(__name__)
  24. # 替换默认的json编码器
  25. app.json_encoder = CustomJSONEncoder
  26. app.config.from_object(config[config_name])
  27. config[config_name].init_app(app)
  28. moment.init_app(app)
  29. db.init_app(app)
  30. loginmanager.init_app(app)
  31. from .base import base as base_blueprint
  32. app.register_blueprint(base_blueprint)
  33. excel.init_excel(app)
  34. return app