您的位置:首页 > Web前端 > CSS

flask拆分为Django样式(一)

2020-07-14 06:32 579 查看

flask拆分为Django样式

  • 进行路由管理的拆分
  • views 变身
  • 数据库ORM改装
  • 二次拆分
  • 环境变量路径 :

    vim ~/.bashrc
    export FLASK_ENV='develop'

    安装flask-script

    1.添加配置manage = Manager(app=app)
    2.改名 为manage.py
    3.把启动程序改为manage.run()
    示例:
    from flask_script import Manager
    
    app = 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.创建app
    from App.views import init_route
    
    def 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 Flask
    from flask_script import Manager
    
    from App import create_app
    
    app = create_app()
    manage = Manager(app=app)
    
    if __name__ == '__main__':
    manage.run()

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

    进行路由管理的拆分

    使用 flask-blueprint来解决

    views.py 文件里

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

    App/init.py :

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

    views 变身

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

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

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

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

    APP/init.py加入

    init_view(app)

    数据库ORM改装

    安装FLASK-SQLALCHEMY

    新建models.py

    from flask_sqlalchemy import SQLAlchemy
    
    db = 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 SQLAlchemy
    
    from App.models import init_model
    from App.views import init_view
    
    def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:123456@localhost:3306/testflask"
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    init_model(app)
    
    init_view(app)
    return app

    first_blue 文件里

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

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

    二次拆分

    最终版拆分

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