Python Flask-Script 模块详解
简介
Flask-Script 是 Flask 的扩展模块,其提供了一些方便的命令行脚本的功能。可以使用 Flask-Script 快速创建和管理 Flask 项目,其中常用的功能有:
- 启动服务器
- 创建数据库
- 初始化数据
- 创建管理员账户等
安装
使用 pip 安装 Flask-Script:
$ pip install Flask-Script
基本使用
我们需要在 Flask 应用程序中的 manage.py 文件中定义一些脚本命令,以便 Flask-Script 运行时执行。下面是一个基本的示例:
from flask_script import Manager
from flask import Flask
app = Flask(__name__)
# 初始化 Flask-Script 扩展
manager = Manager(app)
# 添加自定义的命令
@manager.command
def hello():
print('Hello World!')
if __name__ == '__main__':
manager.run()
Flask-Script 通过 Flask-Script 扩展的 Manager 类来管理 Flask 应用程序。我们再通过 @manager.command 装饰器来给 Manager 类添加自定义的命令。注意:函数名即为命令的名称。
运行上述文件后,在命令行中输入以下命令即可:
$ python manage.py hello
输出结果为:
Hello World!
参数传递
如果你需要给自定义命令传递参数,则可以将函数参数传递给命令项目:
@manager.command
def hello(name):
print('Hello {}'.format(name))
运行时输入:
$ python manage.py hello --name=World
则输出结果为:
Hello World
示例1:构建Flask RESTful API
from flask import Flask, jsonify, request
from flask_script import Manager, Server
app = Flask(__name__)
manager = Manager(app)
@app.route('/search', methods=['POST'])
def search():
# 从请求中获取参数
query = request.form.get('query')
# 查询结果
result = {'result': ['result1', 'result2']}
# 返回结果
return jsonify(result)
if __name__ == '__main__':
# 添加自定义命令 runserver,用于启动服务器
manager.add_command('runserver', Server(port=5000))
# 运行自定义命令
manager.run()
运行上述代码后,可以通过访问 http://127.0.0.1:5000/search 来查询并获取结果。
示例2:生成数据库模型与数据
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from flask import Flask
app = Flask(__name__)
# 配置数据库信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///myapp.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 初始化数据库扩展
db = SQLAlchemy(app)
# 初始化 Flask-Script 扩展
manager = Manager(app)
# 初始化 Flask-Migrate 扩展
migrate = Migrate(app, db)
# 添加自定义命令 db,用于管理数据库
manager.add_command('db', MigrateCommand)
# 定义 User 数据模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
if __name__ == '__main__':
# 运行自定义命令 db init,生成迁移脚本目录
# 运行自定义命令 db migrate,生成数据迁移脚本
# 运行自定义命令 db upgrade,将数据迁移到数据库中
manager.run()
上述代码中,我们通过 Flask-Migrate 扩展实现数据库的迁移。运行上述代码先后输入以下命令即可完成数据库的初始化和管理:
$ python manage.py db init
$ python manage.py db migrate
$ python manage.py db upgrade
总结
Flask-Script 是一个很好的 Flask 扩展,它能够轻松地与 Flask 和其他第三方扩展集成。通过使用 Flask-Script,我们可以更轻松地构建、管理和扩展 Flask 应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python flask-script 模块详解 - Python技术站