flask---整體流程思路
阿新 • • 發佈:2018-12-05
思路圖
下面二話不說還是看程式碼
manage.py內程式碼
import os from flask_migrate import MigrateCommand from flask_script import Manager from App import create_app env = os.environ.get('flask1810') or 'default' app = create_app(env) manager = Manager(app) manager.add_command('db',MigrateCommand) if __name__ =='__main__': manager.run()
init.py內程式碼
import os from flask import Flask from App.ext import init_ext from App.settings import envs from App.views import init_blue def create_app(env): app = Flask(__name__) #初始化專案 app.config.from_object(envs.get(env)) #初始化外掛 init_ext(app) #初始化路由 init_blue(app) return app
ext.py內程式碼
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
migrate = Migrate()#初始化
def init_ext(app):
db.init_app(app)
migrate.init_app(app,db)
models.py內程式碼
from App.ext import db class Person(db.Model): id = db.Column(db.Integer,primary_key=True,autoincrement=True) p_name = db.Column(db.String(16)) p_age = db.Column(db.Integer,default=18)
配置 檔案settings
def get_db_uri(dbinfo):
backend = dbinfo.get('BACKEND')#資料庫
driver = dbinfo.get('DRIVER')
host = dbinfo.get('HOST')
port = dbinfo.get('PORT')
user = dbinfo.get('USER')
password = dbinfo.get('PASSWORD')
name = dbinfo.get('NAME')
return '{}+{}://{}:{}@{}:{}/{}'.format(backend, driver, user, password, host, port, name)
# 'mysql+pymysql://使用者名稱稱:密碼@localhost:埠/資料庫名稱'
class Config:
DEBUG = False
TESTING =False
SECRET_KEY = 'ASCFASFAFW'
SQLALCHEMY_TRACK_MODIFICATIONS = True
# SQLALCHEMY_COMMIT_TEARDOWN = True
class DevelopConfig(Config):#開發環境
DEBUG = True
dbinfo={
'BACKEND':'mysql',
'DRIVER':'pymysql',
'HOST':'localhost',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123456',
'NAME':'flask1810'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
class TestingConfig(Config):#測試環境
DEBUG = True
dbinfo={
'BACKEND':'mysql',
'DRIVER':'pymysql',
'HOST':'127.0.0.1',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123456',
'NAME':'flask1810'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
class StagingConfig(Config):#演示環境
DEBUG = True
dbinfo={
'BACKEND':'mysql',
'DRIVER':'pymysql',
'HOST':'127.0.0.1',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123456',
'NAME':'flask1810'
}
SQLALCHEMY_DATABASE_URI= get_db_uri(dbinfo)
class ProductConfig(Config):#上線環境
DEBUG = True
dbinfo={
'BACKEND':'mysql',
'DRIVER':'pymysql',
'HOST':'127.0.0.1',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123456',
'NAME':'flask1810'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
envs={
'develop':DevelopConfig,
'testing':TestingConfig,
'staging':StagingConfig,
'product':ProductConfig,
'default':DevelopConfig,
}
檢視 views
from flask import Blueprint
from App.models import Person
blue = Blueprint('blue',__name__)
def init_blue(app):
app.register_blueprint(blue)
@blue.route('/')
def index():
return '============'