2 개 이상의 인수를 사용하여 사용자 지정 Flask CLI 명령을 생성하는 방법은 무엇입니까?
사용자 지정 Flask CLI 명령을 만들고 싶습니다. 1 개의 인수로만 사용할 때 잘 작동하지만 2 개 이상의 인수에는 작동하지 않습니다. 아래 코드를 사용하고 있으며 2 개 이상의 인수에 대해 실패합니다.
# Usage: flask power 2 3
# Output: 6
@app.cli.command()
@click.argument('x','y')
def power(x, y):
print(int(x)**int(y))
다음 코드는 단 하나의 매개 변수로 잘 작동합니다.
# Usage: flask power 2
# Output: 6
@app.cli.command()
@click.argument('x')
def power(x):
print(int(x)**3)
2 개 이상의 인수 코드로 재현 된 오류는 다음과 같습니다.
flask power 2 3
Traceback (most recent call last):
File "/home/user/.local/bin/flask", line 8, in <module>
sys.exit(main())
File "/home/user/.local/lib/python3.5/site-packages/flask/cli.py", line 894, in main
cli.main(args=args, prog_name=name)
File "/home/user/.local/lib/python3.5/site-packages/flask/cli.py", line 557, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/home/user/.local/lib/python3.5/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/user/.local/lib/python3.5/site-packages/click/core.py", line 1254, in invoke
cmd_name, cmd, args = self.resolve_command(ctx, args)
File "/home/user/.local/lib/python3.5/site-packages/click/core.py", line 1297, in resolve_command
cmd = self.get_command(ctx, cmd_name)
File "/home/user/.local/lib/python3.5/site-packages/flask/cli.py", line 515, in get_command
rv = info.load_app().cli.get_command(ctx, name)
File "/home/user/.local/lib/python3.5/site-packages/flask/cli.py", line 372, in load_app
app = locate_app(self, import_name, name)
File "/home/user/.local/lib/python3.5/site-packages/flask/cli.py", line 235, in locate_app
__import__(module_name)
File "/projects/challenge/myflaskproj/__init__.py", line 6, in <module>
from myflaskproj.commands import power, repeat
File "/projects/challenge/myflaskproj/commands.py", line 6, in <module>
@click.argument('x','y')
File "/home/user/.local/lib/python3.5/site-packages/click/decorators.py", line 168, in decorator
_param_memo(f, ArgumentClass(param_decls, **attrs))
File "/home/user/.local/lib/python3.5/site-packages/click/core.py", line 1984, in __init__
Parameter.__init__(self, param_decls, required=required, **attrs)
File "/home/user/.local/lib/python3.5/site-packages/click/core.py", line 1483, in __init__
param_decls or (), expose_value
File "/home/user/.local/lib/python3.5/site-packages/click/core.py", line 2019, in _parse_decls
" {}".format(len(decls))
TypeError: Arguments take exactly one parameter declaration, got 2
이 메서드에서 2 개의 인수를 받아들이는 명령을 어떻게 만들 수 있습니까? 내가 어딘가에서 실수하고 있습니까? 도움을 주시면 감사하겠습니다.
BluePrint를 사용하는 몇 가지 솔루션을 보았고 Blueprint를 사용하여 작업을 실행하고 싶지 않습니다! 위의 코드는 간단하고 사용하기 편리합니다. 나는 내가 어디에서 무엇을 잘못하고 있는지 알 수 없었다 !! 추가 도움을 주셔서 감사합니다 !!
답변
2 KusalHettiarachchi
@click.arguments
이러한 방식으로 여러 매개 변수를 허용하지 않습니다.
대신
@app.cli.command()
@click.argument('x', nargs=1)
@click.argument('y', nargs=1)
def power(x, y):
print(int(x)**int(y))
여기 에서 설명서를 참조 하십시오 .