flask-script

Flask-Script

  • flask-script的作用是可以通过命令行的形式来操作Flask.例如通过命令跑一个开发的服务器、设置数据库等。

命令的添加方式

1 .使用manage.command: 这个方法是用来添加那些不需要传递参数的命令的。
2 .使用manage.option: 这个方法是用来添加那些需要传递参数的命令的。有几个参数就需要些使用几个参数器。
3 .如果有一些命令是针对某一功能的,可以加这些命令放在同一个模块里

安装Flask-Script并初始化

用pip可以实现安装:

pip install flask-script

安装完成后,新建manager.py文件并输入下列代码初始化:

复制代码

from flask import Flask

app = Flask(__name__)

"""使用flask-script启动项目"""
from flask_script import Manager
manager = Manager(app)

@app.route('/')
def index():
    return 'hello world'

if  __name__ == "__main__"
    manager.run()
复制代码

可以看出,代码中包含一个Manager实例,是执行代码的必须项,其作用是追踪所有在命令行中调用的命令和处理过程的调用和运行情况。

Manager实例化只有一个参数——Flask实例,无论是导入还是生成,创建Manager实例时都需要用到Flask对象。

当调用manager.run()时,就启动了Manager实例接收命令行中的命令。

Command子类创建命令

要想让Manager知道哪些方法归它管,需要用特定的方法判定归属。

定义一个子类继承自Command类,然后在manager.add_command()方法中可以将这个类定义成一些命令。修改manager.py代码:

复制代码
"""自定义flask_script终端命令"""
from flask_script import Command
class HelloCommand(Command):
    """命令的相关描述"""
    def run(self):
        with open("text.txt", "w") as f:
            f.write("hello\r\nhello")
            pass
        print("这是执行了hello命令")

manage.add_command('hello', HelloCommand())
复制代码

上面的代码中定义了一个子类HelloCommand(),HelloCommand()类继承了Command父类,因此可以用manager.add_command()方法将HelloCommand()类定义成命令“hello”

使用Command实例的@command修饰符

href="mailto:%E4%BD%BF%E7%94%A8@manager.command">使用@manager.command修饰一个定义好的函数,就相当于给此函数添加了一个命令,此命令的名称就是函数的名称。修改manager.py代码如下:

复制代码
from flask_script import Manager,Server,Command
from flask import Flask
 
app = Flask(__name__)
manager = Manager(app)
 
@manager.command
def hello():
 print("Hello world!")
 
if __name__ == "__main__":
 manager.run()
复制代码

使用Command实例的@option修饰符创建命令

前面的例子中,函数都没有设置参数,那如果要传入参数怎么办呢?

@option修饰符就能实现多个参数项传入,继续修改manager.py代码:

复制代码
from flask_script import Manager
from flask import Flask
 
app = Flask(__name__)
manager = Manager(app)
 
@manager.option('-n','--name',dest='name',help='Your name',default='world')
@manager.option('-u','--url',dest='url',default='www.csdn.com')
def hello(name, url):
 print("Hello",name)
 print(url)
 
if __name__ == "__main__":
 manager.run()
复制代码

参考:https://zhuanlan.zhihu.com/p/269820011

posted @   fat_girl_spring  阅读(36)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示