06 flask-script的使用

226次阅读
没有评论

共计 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!
"""
正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计1906字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)