flask拆分为Django样式
- 环境变量路径 :
- 安装flask-script
- 项目拆分成django目录
- 目录结构
- App/__init__.py :
- views.py 文件里
- manage.py 文件里:
- 使用 flask-blueprint来解决
- views.py 文件里
- App/__init__.py :
- 将views转换为包,在 views/__init_.py文件里
- 创建first_blue (这些操作都是为了解耦)
- APP/init.py加入
- 安装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 \'创建成功\'
然后在 浏览器里访问便可创建
二次拆分
最终版拆分