特别鸣谢:
https://blog.csdn.net/xuyanwei5/article/details/109851014
https://www.cnblogs.com/liaojiafa/p/9213875.html
自定义cmd指令
1 flask中:flask-script
# 让你的命令行支持自定义命令
# 实现类似于这样的命令:python manage.py runserver
# 下载模块:
pip3 install flask-script
# 使用:
# 第一步:导入app
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
# 第二步:包装
manager = Manager(app)
@app.route('/')
def index():
return 'hello'
# 第三步:自定义命令
@manager.command
def custom(arg):
"""
自定义命令
python manage.py custom 123
:param arg:
:return:
"""
print(arg)
@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
def cmd(name, url):
"""
自定义命令(-n也可以写成--name)
执行: python manage.py cmd -n lqz -u http://www.oldboyedu.com
执行: python manage.py cmd --name lqz --url http://www.oldboyedu.com
:param name:
:param url:
:return:
"""
print(name, url)
if __name__ == '__main__':
# app.run()
# 第三步使用
manager.run()
2 Django中:内置功能
# Django 中已经集成了相关功能,不需要使用第三方模块
# 使用:
# 步骤1:创建对应的目录
在app目录下创建management文件夹
在management文件夹下创建commands文件夹
在commands文件夹下建立myfaker.py文件 # 该文件名自己定,随便叫
# 步骤2:写一个类,继承BaseCommand,重写handle方法即可
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
def add_arguments(self, parser): # 重写接收参数的方法
parser.add_argument('conf', nargs='+', type=int)
# parser.add_argument('conf1', nargs='+', type=str) # 接收参数可以写多条
def handle(self, *args, **options):
try:
print(options['conf'][0])
print(options['conf'][1])
except:
raise CommandError("出错了")
# 在cmd中执行指令:
python manage.py myfaker 10 20 # myfaker是自定义文件的名字,10和20是传的参数
# 注意事项:
1.先执行add_arguments(),用来配置可以接收的参数,
2.add_arguments()中,第一个参数表示接受的参数名
3.add_arguments()中,属性nargs:"+"表示可以接收多个该类型的参数,显示为列表,默认只接受一个
4.add_arguments()中,属性type表示该参数的类型
5.所有接收的参数,都传给handle()的options,options是一个字典