__init__.py 1.2 KB

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