django和flask中自定义cmd指令

特别鸣谢:
	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是一个字典

image

posted @ 2021-11-01 17:01  hai437  阅读(207)  评论(0编辑  收藏  举报