首页 > 其他 > 详细

flask工厂模式

时间:2021-02-01 21:52:34      阅读:36      评论:0      收藏:0      [点我收藏+]
flask工厂模式开发

技术分享图片
技术分享图片

在monoco目录下还有一个.flaskenv文件,这个文件是指定flask的app和运行环境的,需要使用到python第三方包:dotenv来获取项目运行的环境变量
如果不使用.flaskenv文件去设置flask的app和运行环境的话,就需要在启动flask项目的时候,使用export设置环境变量
#注意:指定的FLAKS_APP的名字需要和包名还有app = Flask(name)中的name一致,否则项目会报找不到app。
最简单的示例如下:
==================================================
__init__.py
from flask import Flask
from monoco.extentions import db
import click

from monoco.models import Webs,Servers,Policies,Rules,Clusters

def create_app(config_name=None):
    if config_name is None:
        config_name = ‘development‘
    app = Flask("monoco")
    app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘mysql://root:hujunkai@localhost:3306/monoto?charset=utf8mb4‘
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    register_extentions(app)
    register_blueprints(app)
    register_commands(app)
    register_shell_context(app)
    return app

def register_shell_context(app):
    @app.shell_context_processor
    def make_shell_context():
        return dict(db=db, Webs=Webs, Servers=Servers, Policies=Policies, Rules=Rules, Clusters=Clusters)

def register_extentions(app):
    db.init_app(app)

def register_blueprints(app):
    from monoco.blueprints.main import main_bp
    app.register_blueprint(main_bp)

def register_commands(app):
    @app.cli.command()
    @click.option("--drop", is_flag=True,help=‘create after drop.‘)
    def initdb(drop):
        """create database after drop it"""
        if drop:
            db.drop_all()
            click.echo("drop tables")
        db.create_all()
        click.echo("initialized finished")
==================================================
extentions.py
# 这里是实例化对象,将需要用到的第三方应用在这里进行实例化,然后在__init__.py中对app进行初始化
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
==================================================
.flaskenv
FLASK_APP=monoco
FLASK_ENV=development
==================================================
blueprints/main.py
from flask import Blueprint, jsonify

main_bp = Blueprint(‘main‘, __name__)
@main_bp.route(‘/‘)
def index():
    return jsonify({"message":"hello"})

最后,要在根目录上一级使用命令flask run 启动项目

flask工厂模式

原文:https://www.cnblogs.com/hjokerkevin/p/14358761.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!