在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 启动项目
原文:https://www.cnblogs.com/hjokerkevin/p/14358761.html