新建flask项目,建Python package包,把static、template拉进去,
新建 settings.py、models.py、init.py、ext.py、views.py,
在默认创建的app.py导包,
from flask_script import Manager
from flask_migrate import MigrateCommand
from myapp import create_app
app = create_app('debug')
manage = Manager(app)
manage.add_command('db',MigrateCommand)
if __name__ == '__main__':
manage.run()
settings.py中配置:各种配置
from redis import StrictRedis
from os import environ
def get_db_uri(conf):
uri = "{backend}+{engine}://{user}:{pwd}@{ip}:{port}/{db}".format(
backend=conf.get("backend"),
engine=conf.get("engine"),
user=conf.get("user"),
pwd=conf.get("pwd"),
ip=conf.get("host"),
port=conf.get("port"),
db=conf.get("db")
)
return uri
class Config:
# 公共的配置
Debug = False
Test = False
Online = False
SECRET_KEY = "djhsdfjkashkwn"
SESSION_TYPE = "redis"
SESSION_KEY_PREFIX = "myapp:"
SQLALCHEMY_TRACK_MODIFICATIONS = False
class DebugConofig(Config):
Debug = True
SESSION_REDIS = StrictRedis(host="127.0.0.1", db=5)
# 数据库配置
DATABASE = {
"engine": "pymysql",
"backend": "mysql",
'user': environ.get("DBUSER"),
'pwd': environ.get("DBPWD"),
"host": "127.0.0.1",
"port": 3306,
"db": '数据库'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(DATABASE)
class TestConfig(Config):
Test = True
SESSION_REDIS = StrictRedis(host="127.0.0.1", db=6)
# 数据库配置
DATABASE = {
"engine": "pymysql",
"backend": "mysql",
'user': environ.get("DBUSER"),
'pwd': environ.get("DBPWD"),
"host": "127.0.0.1",
"port": 3306,
"db": '数据库'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(DATABASE)
class OnlineConfig(Config):
Online = True
SESSION_REDIS = StrictRedis(host="127.0.0.1", db=7)
# 数据库配置
DATABASE = {
"engine": "pymysql",
"backend": "mysql",
'user': environ.get("DBUSER"),
'pwd': environ.get("DBPWD"),
"host": "127.0.0.1",
"port": 3306,
"db": '数据库'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(DATABASE)
conf = {
"debug": DebugConofig,
"test": TestConfig,
"online": OnlineConfig
}
models.py 跟django下models一样
from myapp.ext import db
先导入db
__init__.py 创建app,导入配置,注册蓝图,注册第三方插件
from flask import Flask
from myapp import settings
from myapp.ext import init_ext
from myapp.views import init_blue
def create_app(env_name):
# 实例化app
app = Flask(__name__)
# 配置
app.config.from_object(settings.conf.get(env_name,'debug'))
# 实例化第三方
init_ext(app)
# 蓝图
init_blue(app)
return app
ext.py 第三方插件
from flask_sqlalchemy import SQLAlchemy
from flask_session import Session
from flask_migrate import Migrate
db = SQLAlchemy()
def init_ext(app):
db.init_app(app)
se = Session()
se.init_app(app)
migrate = Migrate(app=app, db=db)
创建蓝图,并注册