def create_app(config, enable_config_env=False): """app工厂""" app = Flask(__name__, template_folder='../templates') app.config.from_object(config) if enable_config_env: from common.utils import constants app.config.from_envvar(constants.GLOBAL_SETTING_ENV_MAIL_USERNAME, silent=True) app.config.from_envvar(constants.GLOBAL_SETTING_ENV_MAIL_PASSWORD, silent=True) app.config.from_envvar(constants.GLOBAL_SETTING_ENV_MAIL_SENDER, silent=True) # 初始化邮箱扩展 mail = Mail() mail.init_app(app) app.mail = mail # 初始化bootstrap扩展 bootstrap = Bootstrap() bootstrap.init_app(app) # 初始化ckeditor ckeditor = CKEditor() ckeditor.init_app(app) return app
def create_app(): BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) templates_dir = os.path.join(BASE_DIR, r'App\templates') static_dir = os.path.join(BASE_DIR, r'App\static') app = Flask(__name__, static_folder=static_dir, template_folder=templates_dir) # 引入app实例 ''':exception 蓝图注册部分''' app.config.from_object('config') from App.login import views, login app.register_blueprint(blueprint=login) # 将app交由blue管理 登陆 from App.life import views, life app.register_blueprint(blueprint=life) # 将app交由blue管理 首页 from App.blog import views, blog app.register_blueprint(blueprint=blog) # 将app交由blue管理 blog from App.about import views,about app.register_blueprint(blueprint=about) # 将app交由blue管理 关于我 from App.sercet import views,sercet app.register_blueprint(blueprint=sercet) # 将app交由blue管理 福利 from App.mypython import views,mypython app.register_blueprint(blueprint=mypython) # 将app交由blue管理 python from App.news import views,news app.register_blueprint(blueprint=news) # 将app交由blue管理 新闻 ''':exception flask_admin部分''' admin = Admin(app, name='web', template_mode='bootstrap3') db.init_app(app) ''':exception 数据库扩展部分''' from models import AdminUser, Tag, Article,Status,Category,Secret ckeditor = CKEditor() ckeditor.init_app(app) admin.add_view(UserAdmin(AdminUser, db.session, name=u'用户管理')) admin.add_view(BaseModelview(Status, db.session, name=u'状态管理')) admin.add_view(BaseModelview(Tag, db.session, name=u'标签管理')) admin.add_view(BaseModelview(Category, db.session, name=u'分类管理')) admin.add_view(MessageAdmin(Article, db.session, name=u'文章管理')) admin.add_view(Secretadmin(Secret,db.session,name = u'福利内容')) ''':exception flask国际化''' from flask_babelex import Babel babel = Babel(app) ''':exception Session部分''' Session(app) return app
app = Flask(__name__) app.config['SECRET_KEY'] = '1a0303f517b1a1c15d4637c83be89ebc' app.config['RECAPTCHA_PUBLIC_KEY'] = '6Lc46NEaAAAAACT9wezgGCyNFGxld_lLC6y8Zko1' app.config[ 'RECAPTCHA_PRIVATE_KEY'] = '6Lc46NEaAAAAABA089xpPhOB2e-MZB-EsoOyXXLO' app.config['MAIL_SERVER'] = "smtp.googlemail.com" app.config['MAIL_PORT'] = 587 app.config['MAIL_USE_TLS'] = True app.config['MAIL_USERNAME'] = '******' app.config['MAIL_PASSWORD'] = '******' Mobility(app) ckeditor = CKEditor() mail = Mail() ckeditor.init_app(app) mail.init_app(app) def no_dispose(form, field): if requests.get(f'https://disposable.debounce.io/?email={field.data}' ).json()['disposable'] == 'true': raise ValidationError('Disposable Emails are not allowed') def no_profane(form, field): if profanity.contains_profanity(html2text.html2text(field.data)): raise ValidationError('We strictly prohibit profane messages') class ContactForm(FlaskForm):
def create_app(config_name=None): config_name = config_name or (os.getenv('FLASK_CONFIG') or 'development') app = Flask(__name__, static_url_path=Config.STATIC_URL_PATH, static_folder=Config.STATIC_FOLDER, template_folder=Config.TEMPLATE_FOLDER) app.config.from_object(config[config_name]) if app.config['CONFIG_NAME'] != 'production': app.config['APP_VERSION'] = datetime.datetime.timestamp( datetime.datetime.utcnow()) # logging logging_level = app.config.get('LOGGER_LEVEL') print('FLASK APP INSTANCE CREATED: create_app({}) - LOG LEVEL: {}'.format( config_name, logging_level)) # logging_file_handler = logging.FileHandler(Helper.base_path('misc/log/app.log')) app.logger.setLevel(logging_level) # app.logger.addHandler(logging_file_handler) # disable werkzeug verbose access logs werkzeug_logger = logging.getLogger('werkzeug') werkzeug_logger.setLevel(logging_level) # disable gunicorn verbose access logs gunicorn_logger = logging.getLogger('gunicorn.access') gunicorn_logger.setLevel(logging_level) # for running db commands in flask app such as: flask db init m.db.init_app(app) Migrate(app, m.db) @app.errorhandler(InvalidUsage) def handle_invalid_usage(error): response = jsonify(error.to_dict()) response.status_code = error.status_code return response # Blueprints from app import routes as base_routes app.register_blueprint(base_routes.bp, url_prefix='') # flask_login login_manager = flask_login.LoginManager() login_manager.init_app(app) login_manager.session_protection = 'strong' @login_manager.user_loader def user_loader(user_id): return m.User.query.get(user_id) @login_manager.unauthorized_handler def unauthorized(): return redirect(url_for('base.unauthorized')) # Editor configs ckeditor = CKEditor() ckeditor.init_app(app) # CLI from app.cli.tune import cli as tune_cli app.cli.add_command(tune_cli) return app