文档: https://flask-script.readthedocs.io/en/latest/
这个模块的作用可以让我们通过终端来控制flask项目的运行,类似于django的manage.py
安装命令:
pip install flask-script
集成 Flask-Script到flask应用中,创建一个主应用程序,一般我们叫manager.py/run.py/main.py
都行。
下面的应用名:manager.py
# 自定义脚本命令
# 1. 引入Command命令基类
# 2. 创建命令类必须直接或间接继承Command,并在内部实现run方法,同时如果有自定义的其他参数,则必须实现__init__
# 3. 使用flask_script应用对象manage.add_command对命令类进行注册,并设置调用终端别名。
# option装饰后的作用:可以传递命令参数,通过装饰器manager.command,添加一个命令
from flask import Flask
from flask_script import Manager,Command,Option
import os
app = Flask(__name__)
class Config():
DEBUG = True
app.config.from_object(Config)
"""基于flask_script创建自定义终端命令"""
class HelloCommand(Command):
"""命令相关的注释"""
option_list = [
Option("--name","-n",help='名称'), # 自定义的命令参数 简写参数 参数的帮助信息
Option("--qwq","-m",help="大魔王")
]
def run(self,name,qwq):
print("name=%s" % name)
print(qwq)
print("命令执行了!!!")
class BluePrintCommand(Command):
""" 和django的创建应用app的命令 """
option_list = [
Option( '--startapp',"-startapp",help='创建应用app')
]
def run(self, startapp):
if startapp is None :
print('文件名不能为空!')
return
elif not os.path.isdir(startapp):
os.mkdir(startapp)
open("%s/views.py" % startapp,'w')
open("%s/models.py" % startapp, 'w')
with open("%s/urls.py" % startapp, 'w') as f:
f.write("""from . import views
urlpatterns = [
]
""")
print('创建成功!')
else:
print("创建失败!文件名已存在")
# 注册终端脚本工具到app中
manager = Manager(app)
manager.add_command('hello',HelloCommand) # 自定义的命令名字
manager.add_command('startapp',BluePrintCommand)
@app.route(rule='/')
def qwq():
return 'ok'
if __name__ == '__main__':
# 注意,这里不是app对象
manager.run()
# 端口和域名不写,默认为127.0.0.1:5000
# python manager.py runserver manager.py 本py文件的名字
# 通过-h设置启动域名,-p设置启动端口
# python manager.py runserver -h127.0.0.1 -p8888
""" 命令显示
(flask) yanmu@yanmu:~/桌面/flask/day02$ python manager.py startapp --startapp=qwq
创建成功!
(flask) yanmu@yanmu:~/桌面/flask/day02$ python manager.py startapp --startapp=qwq
创建失败!文件名已存在
(flask) yanmu@yanmu:~/桌面/flask/day02$ python manager.py hello --name=大魔王 -m=qwq
name=大魔王
qwq
命令执行了!!!
(flask) yanmu@yanmu:~/桌面/flask/day02$ python manager.py runserver -h127.0.0.1 -p9000
* Running on http://127.0.0.1:9000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 104-532-688
^C(flask) yanmu@yanmu:~/桌面/flask/day02$ python manager.py
usage: manager.py [-?] {hello,startapp,shell,runserver} ...
positional arguments:
{hello,startapp,shell,runserver}
hello 命令相关的注释
startapp 和django的创建应用app的命令
shell Runs a Python shell inside Flask application context.
runserver Runs the Flask development server i.e. app.run()
optional arguments:
-?, --help show this help message and exit
(flask) yanmu@yanmu:~/桌面/flask/day02$
"""