17. Flask-Script扩展命令行

2022-01-14 17:15:59 浏览数 (1)

介绍

在Django中启动服务的时候,可以使用python manage.py runserver 或者 python manage.py shell,那么Flask能否也执行该类的扩展命令行呢?

下面来看看。

Flask-Script扩展

Flask-Script 的引入以及使用:

代码语言:javascript复制
# 安装flask_script
pip3 install flask_script

# 引入flask_script
from flask_script import Manager   # 启动命令的管理类

# 创建flask的app应用对象
app = Flask(__name__)

# 创建Manager管理类的对象
manager = Manager(app)

# 通过管理对象来启动flask
manager.run()

通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。

完整示例代码

代码语言:javascript复制
from flask import Flask
from flask_script import Manager   # 启动命令的管理类

# 创建Flask的app应用
app = Flask(__name__)

# 创建Manager管理类的对象
manager = Manager(app)

# index视图函数
@app.route("/index")
def index():
    return "index page"

if __name__ == '__main__':
    # app.run(debug=True)
    # 通过管理对象来启动flask
    manager.run()

使用命令行启动flask

启动Flask应用不仅仅可以通过app.run()方法中传参以及启动,通过flask_script可以通过python hello.py runserver 来启动服务,如下:

指定IP和端口号命令行启动flask

还可以指定IP和端口号的启动方式,如下:

代码语言:javascript复制
$ python3 09_flask_script.py runserver --help
usage: 09_flask_script.py runserver [-?] [-h HOST] [-p PORT] [--threaded]
                                    [--processes PROCESSES]
                                    [--passthrough-errors] [-d] [-D] [-r] [-R]
                                    [--ssl-crt SSL_CRT] [--ssl-key SSL_KEY]

Runs the Flask development server i.e. app.run()

optional arguments:
  -?, --help            show this help message and exit
  -h HOST, --host HOST
  -p PORT, --port PORT
  --threaded
  --processes PROCESSES
  --passthrough-errors
  -d, --debug           enable the Werkzeug debugger (DO NOT use in production
                        code)
  -D, --no-debug        disable the Werkzeug debugger
  -r, --reload          monitor Python files for changes (not 100% safe for
                        production use)
  -R, --no-reload       do not monitor Python files for changes
  --ssl-crt SSL_CRT     Path to ssl certificate
  --ssl-key SSL_KEY     Path to ssl key

我们还可以通过--help来查看参数。

默认可以看到命令行只可以使用shellrunserver

执行flask的交互shell模式

最后再来看看启动交互式的shell,如下:

代码语言:javascript复制
$ python3 09_flask_script.py shell

# 导入当前的应用
In [1]: from flask import current_app

# 打印当前应用的名称
In [2]: current_app.name
Out[2]: '09_flask_script'

# 不需要导入app了,默认就可以直接使用脚本已经定义好的方法以及对象
In [3]: app.url_map
Out[3]:
Map([<Rule '/index' (GET, OPTIONS, HEAD) -> index>,
 <Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>])

0 人点赞