Flask之Flask-Script 扩展
这个模块的作用可以让我们通过终端来控制flask项目的运行
安装命令:
pip install flask-script -i https://pypi.douban.com/simple
Manager
集成 Flask-Script到flask应用中,创建一个主应用程序,一般我们叫manage.py/run.py/main.py
都行。
from flask import Flas from flask_script import Manager app = Flask(__name__) """使用flask_script启动项目""" manage = Manager(app) @app.route('/') def index(): return 'hello world' if __name__ == "__main__": manager.run()
启动终端脚本的命令:
# 端口和域名不写,默认为127.0.0.1:5000 python run.py runserver # 通过-h设置启动域名,-p设置启动端口 -d python run.py runserver -h127.0.0.1 -p8888 # 关闭debug模式 python run.py runserver -h127.0.0.1 -p8888 -d # 开启debug模式
自定义终端命令
Flask-Script 还可以为当前应用程序添加脚本命令
- 引入Command命令基类
- 创建命令类必须直接或间接继承Command,并在内部实现run方法或者
__call__()
方法,
同时如果有自定义的其他参数,则必须实现get_options或者option_list - 使用flask_script应用对象manage.add_command对命令类进行注册,并设置调用终端别名。
from flask import Flask from flask_script import Manager,Command,Option app = Flask(__name__) """使用flask_script启动项目""" manage = Manager(app) """自定义终端命令""" class PrintCommand(Command): """命令的相关描述: 打印数据""" def get_options(self): options = ( Option('-h', '--host', dest='host', default="127.0.0.1"), Option('-q', '--quit', dest='quit', default="退出",type=str), Option('-p', '--port', dest='port', type=int, default="7000"), ) return options # 也可以使用option_list来替代get_options # option_list = ( # Option('-h', '--host', dest='host', default="127.0.0.1"), # Option('-q', '--quit', dest='quit', default="退出",type=str), # Option('-p', '--port', dest='port', type=int, default="7000"), # ) def run(self,host,port,quit): # 没有app对象 print("测试命令") print(f"self.host={host}") print(f"self.port={port}") print(f"self.quit={quit}") # def __call__(self, app, *args, **kwargs): # 会自动传递当前flask实例对象进来 # print("测试命令") # print(app) manage.add_command("print", PrintCommand) @app.route("/") def index(): return "ok" if __name__ == '__main__': manage.run()
运行文件得到提示print相关解释:
运行加print
触发里面的相关方法:
练习:
1. 使用终端命令则可以在当前目录下创建以下目录和文件 home/ |- vies.py |- models.py |- urls.py |- test.py |- __init__.py
import os from flask import Flask from flask_script import Manager, Command, Option app = Flask(__name__) manage = Manager(app) class Create(Command): """创建文件""" option_list = ( Option("-n", "--name", dest="name", type=str), ) def run(self, name): nod_list = ['vies.py', 'models.py', 'urls.py', 'test.py', '__init__.py'] # 文件列表 path = os.getcwd() # 获取当前工作目录 os.chdir(path) # 切换到当前工作目录 if os.path.exists(name): # 判断文件是否存在 print('当前文件已存在') return os.makedirs(name) # 创建文件夹 new_path = os.path.join(os.getcwd(), name) # 拼接路径 os.chdir(new_path) # 切换工作目录 for nod in nod_list: # os.mknod(nod) # 创建文件(windows下os模块没有mknod方法,可以使用open打开文件的方法) # open(nod, 'w') with open(nod, 'w') as f: pass manage.add_command("create", Create) if __name__ == '__main__': manage.run() # python run.py create -n[你要创建的文件夹名称]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?