AI智能
改变未来

flask拆分为Django样式(一)

flask拆分为Django样式

  • 环境变量路径 :
  • 安装flask-script
  • 项目拆分成django目录
  • 目录结构
  • App/__init__.py :
  • views.py 文件里
  • manage.py 文件里:
  • 进行路由管理的拆分
    • 使用 flask-blueprint来解决
    • views.py 文件里
    • App/__init__.py :
  • views 变身
    • 将views转换为包,在 views/__init_.py文件里
    • 创建first_blue (这些操作都是为了解耦)
    • APP/init.py加入
  • 数据库ORM改装
    • 安装FLASK-SQLALCHEMY
    • 新建models.py
    • 在App/init.py里添加
    • first_blue 文件里
  • 二次拆分
  • 环境变量路径 :

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

    安装flask-script

    1.添加配置manage = Manager(app=app)2.改名 为manage.py3.把启动程序改为manage.run()示例:
    from flask_script import Managerapp = Flask(__name__)manage = Manager(app=app)@app.route(\'/\')def hello_world():return \'Hello World!\'if __name__ == \'__main__\':manage.run(debug=True)

    项目拆分成django目录

    目录结构

    创建没有的文件和文件夹
    ├── App
    │ ├── init.py
    │ ├── models.py
    │ ├── static
    │ ├── templates
    │ └── views.py
    ├── manage.py
    └── pycache
    如果直接将manage.py 里的函数剪切进 views.py 并导入包这种方式会出现循环引用,解决方式

    App/init.py :

    from flask import Flask# 1.创建appfrom App.views import init_routedef create_app():app = Flask(__name__)# 2. 想将views导入,但是这里导入的话 ,views还是要导入app 因此采用函数调用的方式,这种方式也称为懒加载init_route(app)return app

    views.py 文件里

    def init_route(app):@app.route(\'/\')def hello_world():return \'Hello World!\'

    manage.py 文件里:

    from flask import Flaskfrom flask_script import Managerfrom App import create_appapp = create_app()manage = Manager(app=app)if __name__ == \'__main__\':manage.run()

    此时就可以使用 python manage.py runserver 去运行了

    进行路由管理的拆分

    使用 flask-blueprint来解决

    views.py 文件里

    from flask import Blueprintblue = Blueprint(\'blue\',__name__)@blue.route(\'/\')def index():return \'我是蓝图的主页\'

    App/init.py :

    from flask import Flask# 1.创建appfrom App.views import bluedef create_app():app = Flask(__name__)# 2. register_blueprintapp.register_blueprint(blue)return app

    views 变身

    将views转换为包,在 views/_init.py文件里

    from .first_blue import bluedef init_view(app):app.register_blueprint(blue)

    创建first_blue (这些操作都是为了解耦)

    	from flask import Blueprintblue = Blueprint(\'blue\',__name__)@blue.route(\'/\')def index():return \'我是蓝图的主页\'

    APP/init.py加入

    init_view(app)

    数据库ORM改装

    安装FLASK-SQLALCHEMY

    新建models.py

    from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy()def init_model(app):db.init_app(app)class User(db.Model):id = db.Column(db.Integer,primary_key=True)username = db.Column(db.String(16))

    在App/init.py里添加

    from flask import Flask# from flask_sqlalchemy import SQLAlchemyfrom App.models import init_modelfrom App.views import init_viewdef create_app():app = Flask(__name__)app.config[\'SQLALCHEMY_DATABASE_URI\'] = \"mysql+pymysql://root:123456@localhost:3306/testflask\"app.config[\'SQLALCHEMY_TRACK_MODIFICATIONS\'] = Falseinit_model(app)init_view(app)return app

    first_blue 文件里

    @blue.route(\'/createdb/\')def creaetdb():db.create_all()return \'创建成功\'

    然后在 浏览器里访问便可创建

    二次拆分

    最终版拆分

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » flask拆分为Django样式(一)