flask项目拆分重构实例
程序员文章站
2022-07-13 17:34:06
...
由于好久没有用flask框架做项目。一时间忘记了 flask的拆分。在这里做一个笔记,供大家参考、
我们先来安装一下需要的依赖库
pip install flask_script
pip install flask_sqlalchemy
pip install flask_migrate
一、利用pycharm创建一个flask项目。
会得到这样一个目录
其中从上至下,第一个文件为pycharm的项目配置文件,不用管。
static为放置静态文件的目录。
templates为放置模板的目录
apps为flask的入口文件,即启动文件
二、先创建需要用到的文件和目录。
如图我们先创建这样一些文件和目录。
三、配置文件和目录
1.我们先配置apps包下的__init__.py文件
from flask import Flask
import settings
from apps.views.view import bp
from exts import db
def create_app():
# 创建flask app 并指定目录
app = Flask(__name__, template_folder='../templates', static_folder='../static')
# 导入配置文件
app.config.from_object(settings)
# 添加数据库扩展
db.init_app(app)
# 注册蓝图
app.register_blueprint(bp)
return app
2.我们在apps/views包下创建view.py文件。以后我们下的其他view文件也放到这个下面,例如,如果我们开发比较大型的现目,有 user_view.py, order_view.py, shopping_view.py等多个文件,这样我们就可以好的区分每个模块的文件了。
这里我们就创建一个通用的view.py文件,输入一下代码
from flask import Blueprint
# 创建一个蓝图对象
bp = Blueprint('main', __name__)
# 创建一个主页路由
@bp.route('/')
def index():
print('hello flask!')
return 'hello flask!'
3.打开settings.py文件,输入一下代码
import os
# 项目基础配置
ENV = 'development' # 是开发模式
DEBUG = True # 打开debug
# mysql+驱动://用户名:密码@主机:3306/数据库名
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:aaa@qq.com:3306/book1'
SQLALCHEMY_TRACK_MODIFICATIONS = False
# cookies配置
SECRET_KEY = 'jkdfkldsj7345374^&5'
# 多媒体文件上传配置
BASE_DIR = os.path.dirname(__file__)
UPLOAD_DIR = os.path.join(BASE_DIR, 'static/upload')
4.模仿django实现manage.py文件,打开manage.py文件。输入一下代码
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from apps import create_app
from exts import db
# 如果有models文件 一定在上面导入,不然migrates 是识别不到的,就会导入数据库失败
# 创建app
app = create_app()
# 把app加入到manger中
manager = Manager(app=app)
# 添加命令 (数据库相关)
migrate = Migrate(app=app, db=db)
manager.add_command('main', MigrateCommand)
if __name__ == '__main__':
manager.run()
到此基本的拆分就结束了,先去启动项目就可以访问了127.0.0.1:5000 得到 hello flask!
接下来我们来配置数据相关的
5.创建数据对象
在exts目录下的__init__.py文件中输入一下代码:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
6.创建model.py文件
在apps/models/model.py 中创建model模型 就可以了。然后再命令行migrate就行了。
拆分就到这里就结束了。
上一篇: Haproxy+Keepalived高可用双机单活
下一篇: spring-aop基本概念
推荐阅读