Fork me on GitHub

Flask学习笔记(十一)-Flask-script使用详解

一、定义

flask-script是一个支持自定义命令的工具,为Flask程序添加了一个命令行解析器,可以让程序从命令行直接执行相应的程序。

flask-script支持在Flask中编写外部脚本,这包括运行开发服务器、定制python-shell、设置数据库的脚本、cronjobs和其他属于web应用程序本身之外的命令行任务。

二、安装flask_script

1
pip install Flask-Script

三、使用案例  

1、简单使用

将flask-script继承在Flask项目manager.py中,其代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
from flask import Flask
from flask_script import Manager   #导入Manager方法
 
app = Flask(__name__)
 
manager = Manager(app)  # 将命令行绑定在app应用中
 
@app.route('/')
def index():
    return 'hello world'
 
if  __name__ == "__main__"
    manager.run()

 由于我们通过Manager()方法将命令行绑定在app应用中,所以需要命令行执行下面代码来启动flask程序: 

1
python manager.py runserver

运行结果如下:  

 

 在app.py runserver后面可以接以下命令:

1
[-?] [-h HOST] [-p PORT] [--threaded] [--processes PROCESSES] [--passthrough-errors] [-d] [-D] [-r] [-R] [--ssl-crt SSL_CRT] [--ssl-key SSL_KEY]

举个简单的例子,修改flask服务的端口号,命令行执行代码如下所示:

1
python manager.py runserver -p 8080

运行结果如下:

2、装饰器@manager.command

 在刚才的基础上,添加可以输出的函数,并在命令行输出,需要调用装饰器@manager.command ,无法传参。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from flask import Flask
from flask_script import Manager   #导入Manager方法
 
app = Flask(__name__)
 
manager = Manager(app)  # 将命令行绑定在app应用中
 
@app.route('/')
def index():
    return 'hello world'
 
@manager.command
def welcome():    #自定义flask-script
    print('welcome')
 
# 用manager.command方法,可以自定义旗下的函数,
# 后面跟参数,每个参数加空格即可
# 这样在命令行就可以执行该函数
@manager.command
def xf_say(arg, num):
    print(arg * int(num))
 
@manager.option("-n", "--name", dest="name")
@manager.option("-a", "--adj", dest="adj")
def xftest(name, adj):
    print(name + "你真的很" + adj)
 
 
if  __name__ == "__main__":
    manager.run()

命令行:

1
python manager.py xf_say "fuck you" 2
  • 这里分别给函数<xf_say>传了两个参数,"fuck you" 和2
  • 运行结果
1
fuck youfuck you

3、装饰器@manager.opation

用opation装饰器看一看有什么不同(示例同上@manager.option)

  • 在这里,option传递了两种参数:manager.option("-短指令","--长指令",dest="参数名")

命令行:

1
2
python manager.py xftest -n 小风 -a 帅
python manager.py xftest --name 波音737MAX --adj 不安全

 运行结果:

 备注:

1、当函数有需要传参时,最好用@manager.opation

2、当函数没有参数时,最好用@manager.command

posted @   橘子偏爱橙子  阅读(934)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示