您的位置:首页 > 编程语言 > Go语言

flask拆成django项目(二)(终极)

2020-07-14 06:32 676 查看

flask拆分为Django样式二

  • 进行迁移命令的改装
  • 二级改装

    最终项目结构

    ├── App
    │ ├── ext.py
    │ ├── init.py
    │ ├── models.py
    │ ├── pycache
    │ ├── settings.py
    │ ├── static
    │ ├── templates
    │ └── views
    ├── manage.py
    本次项目拆分需结合上一篇文章.

    在App文件夹里新建settings.py文件

    在settings中在配置开发环境

    import os
    # 获取当前根目录
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    def get_db_uri(dbinfo):
    engine = dbinfo.get("ENGINE") or "sqlite"
    driver = dbinfo.get("DRIVER") or "sqlite"
    user = dbinfo.get("USER") or ""
    password = dbinfo.get("PASSWORD") or ""
    host = dbinfo.get("HOST") or ""
    port = dbinfo.get("PORT") or ""
    name = dbinfo.get("NAME") or ""
    return "{}+{}://{}:{}@{}:{}/{}".format(engine,driver,user,password,host,port,name)
    
    class Config:
    DEBUG = False
    TESTING = False
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    class DevelopConfig(Config):
    DEBUG = True
    dbinfo = {
    
    "ENGINE": "mysql",
    "DRIVER": "pymysql",
    "USER": "root",
    "PASSWORD": "123456",
    "HOST": "localhost",
    "PORT": "3306",
    "NAME": "HelloFlask"
    
    }
    
    SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
    
    class TestConfig(Config):
    TESTING = True
    
    dbinfo = {
    
    "ENGINE": "mysql",
    "DRIVER": "pymysql",
    "USER": "root",
    "PASSWORD": "rock1204",
    "HOST": "localhost",
    "PORT": "3306",
    "NAME": "GP1HelloFlask"
    
    }
    
    SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
    
    class StagingConfig(Config):
    
    dbinfo = {
    
    "ENGINE": "mysql",
    "DRIVER": "pymysql",
    "USER": "root",
    "PASSWORD": "rock1204",
    "HOST": "localhost",
    "PORT": "3306",
    "NAME": "GP1HelloFlask"
    
    }
    
    SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
    
    class ProductConfig(Config):
    
    dbinfo = {
    
    "ENGINE": "mysql",
    "DRIVER": "pymysql",
    "USER": "root",
    "PASSWORD": "rock1204",
    "HOST": "localhost",
    "PORT": "3306",
    "NAME": "GP1HelloFlask"
    
    }
    
    SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
    
    envs = {
    'develop': DevelopConfig,
    'testing': TestConfig,
    'staging': StagingConfig,
    'product': ProductConfig,
    'default': DevelopConfig
    }

    在first_blue里添加

    from App.models import User
    @blue.route('/createuser/')
    def creaetuser():
    user = User()
    user.username = "tom"
    user.save()
    return '创建成功'

    在App/init.py中修改为

    def create_app(env):
    app = Flask(__name__)
    # app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:123456@localhost:3306/testflask"
    # app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    # init_model(app)
    app.config.from_object(envs.get(env))
    init_ext(app)
    init_view(app)
    return app

    在manage.py中

    import os
    env = os.environ.get("FLASK_ENV","develop")
    app = create_app(env)

    这样做的好处为 当电脑为开发者的电脑 则自动获取到开发者环境, 当电脑为测试环境的电脑 则自动获取到测试
    原理就是:

    vim ~/.bashrc
    export FLASK_ENV='develop'

    这时候便可以运行访问

    http://127.0.0.1:5000/createuser/
    进行创建

    进行迁移命令的改装

    每次写新表都需要访问浏览器或者在

    Python shell
    里进行创建很不方便,于是想要变成
    python manage.py migrate
    这种样式
    ### 安装 Flask-Migrate

    在ext.py 文件里做如下修改

    from flask_migrate import Migrate
    from flask_sqlalchemy import SQLAlchemy
    
    db = SQLAlchemy()
    migrate  = Migrate()#add 
    
    def init_ext(app):
    # 数据库
    db.init_app(app)
    migrate.init_app(app,db)#add 

    在manage.py 修改

    import os
    
    from flask_migrate import MigrateCommand # 增加此行
    from flask_script import Manager
    
    from App import create_app
    env = os.environ.get("FLASK_ENV","develop")
    app = create_app(env)
    manage = Manager(app=app)
    manage.add_command('db',MigrateCommand)# 增加此行命令
    
    if __name__ == '__main__':
    manage.run()

    此时便可以运行,但在这之前需要删除以前生成的文件,于是在first_blue文件里

    @blue.route('/dropdb/')
    def dropdb():
    db.drop_all()
    return '删除成功'

    访问并且删除即可

    运行命令

    1.查看命令,此时运行

    python manage.py
    便可以看到关于 db的命令
    2.初始化,第一次使用需运行
    python manage.py db init
    进行初始化
    3.迁移,
    python manage.py db migrate

    4. 同步到数据库,
    python manage.py db upgrade

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: