AI智能
改变未来

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

flask拆分为Django样式二

  • 二级改装
  • 最终项目结构
  • 在App文件夹里新建settings.py文件
  • 在settings中在配置开发环境
  • 在first_blue里添加
  • 在App/__init__.py中修改为
  • 在manage.py中
  • 进行迁移命令的改装
    • 在ext.py 文件里做如下修改
    • 在manage.py 修改
    • 运行命令

    二级改装

    最终项目结构

    ├── 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 = FalseTESTING = FalseSQLALCHEMY_TRACK_MODIFICATIONS = Falseclass DevelopConfig(Config):DEBUG = Truedbinfo = {\"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 = Truedbinfo = {\"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 [email protected](\'/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 osenv = os.environ.get(\"FLASK_ENV\",\"develop\")app = create_app(env)

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

    vim ~/.bashrcexport FLASK_ENV=\'develop\'

    这时候便可以运行访问

    http://127.0.0.1:5000/createuser/

    进行创建

    进行迁移命令的改装

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

    Python shell

    里进行创建很不方便,于是想要变成

    python manage.py migrate

    这种样式
    ### 安装 Flask-Migrate

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

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

    在manage.py 修改

    import osfrom flask_migrate import MigrateCommand # 增加此行from flask_script import Managerfrom App import create_appenv = 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

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » flask拆成django项目(二)(终极)