1. 程式人生 > >flask---整體流程思路

flask---整體流程思路

在這裡插入圖片描述
思路圖

在這裡插入圖片描述
下面二話不說還是看程式碼
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 '============'