共计 1906 个字符,预计需要花费 5 分钟才能阅读完成。
一.flask-script 的作用
-
flask-script 的作用是可以通过 命令行的形式 来操作 Flask
-
例如 django 中
python3 manage.py runserver
... 类似的命令
二. 安装
pip install flask-script
三. 基本使用步骤
- 首先,创建一个 Python 模板运行命令脚本,可起名为 manager.py
- 在该文件中,必须有一个 Manager 实例,Manager 类追踪所有在命令行中调用的命令和处理过程的调用运行情况
- Manager 只有一个参数, 即 Flask 实例,也可以是一个函数或其他的返回 Flask 实例
- 调用 manager.run()启动 Manager 实例接收命令行中的命令
# manage.py
from flask import Flask
from flask_script import Manager
app01 = Flask(__name__)
manager = Manager(ap p01) # 创建一个 Manager 实例, 传入 Flask 实例
@app01.route('/index1')
def index1():
return 'app01'
if __name__ == '__main__':
manager.run()
# 命令行启动命令
Python manage.py runserver
python manage.py runserver -h 127.0.0.1 -p 8080 # 指定 ip+port
四. 自定制命令
1. 自定制命令应用场景(有什么用)(示例)?
- 使用
xx.sql
文件进行数据初始化
python3 manage.py initdb xx.sql
- 从 excel 中直接导入数据库
python3 manage.py excet_to_db -t=user -e=xx.xls
- 项目中使用 celery
python3 manage.py startcelerybeat
python3 manage.py startcelerywork
2. 使用 @manager.command 装饰器来制定
- manage.py
from flask import Flask
from flask_script import Manager
app01 = Flask(__name__)
manager = Manager(app01)
@manager.command
def custom(name,age):
print(f'名字:{name}')
print(f'年龄:{age}')
if __name__ == '__main__':
manager.run()
- 命令行执行自定制命令
>> python manage.py custom "shawn" 77 # 后面是传入的参数
"""
名字:shawn
年龄:77
"""
3. 使用 @manager.option() 装饰器来制定
- manage.py
from flask import Flask
from flask_script import Manager
app01 = Flask(__name__)
manager = Manager(app01)
# 支持前面两种指定参数的形式, 都关联到 dest 指定的参数名
@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
def test(name, url):
print(f'名字:{name}')
print(f'地址:{url}')
if __name__ == '__main__':
manager.run()
- 命令行执行自定制命令
>> python manage.py test -n shawn -u 127.0.0.1
"""
名字:shawn
地址:127.0.0.1
"""
>> python manage.py test --name song --url 1.1.1.1
"""
名字:song
地址:1.1.1.1
"""
4. 通过继承 Command 子类的方式来制定
- manage.py
from flask import Flask
from flask_script import Manager,Command
app01 = Flask(__name__)
manager = Manager(app01)
# 写一个类, 继承 Command
class Hello(Command):
def run(self):
print('Hello work!')
# 注册命令, 第一个参数就是运行时的命令
manager.add_command('hello', Hello())
if __name__ == '__main__':
manager.run()
- 命令行执行自定制命令
python manage.py hello
"""
Hello World!
"""
正文完