django 切肉机:如果用户对一个参数输入no,则停止执行cookiecutter

pu82cl6c  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(91)

Cookiecutter.json有一个接受“yes”或“no”的参数:

{ "test" : [ "yes", "no"] }

如果用户选择“是”,则它应该继续进一步接受输入,如果不是,则它应该停止。hooks文件夹下的pre_gen_project.py中包含了相同的逻辑。

try:
    if "{{ cookiecutter.test }}" == "yes":
        cookiecutter.prompt.read_user_variable("full_name","your_synthetic_test_name")

    else:
       sys.exit(0)
except Exception as ex:
    print("Exception in pre_gen_project script")

这里的问题是,它进入了else条件,但cookie cutter的执行并没有停止。有什么建议,请告诉我。谢谢大家。

oxalkeyp

oxalkeyp1#

我觉得你做的检查是错的。理想情况下,您应该检查用户解析的值是否包含在JSON中提到的允许值集中
首先你需要读取json文件:

with open('Cookiecutter.json', 'r') as file:
    json_data = json.load(file)

然后检查用户选择的值是否存在于JSON中的值集合中

# userpassed_val could be either yes or no or some other random val
if userpassed_val in json_data['test']:
    cookiecutter.prompt.read_user_variable("full_name","your_synthetic_test_name")
else:
    # value does not exist under test key in the json
    sys.exit(0)

相关问题