【问题标题】:Is there a way to validate that one checkbox is checked in Flask?有没有办法验证在 Flask 中选中了一个复选框?
【发布时间】:2019-11-23 00:38:26
【问题描述】:

我正在尝试创建一个包含多个复选框的 Flask 表单。但是,我想确保用户在一组大约 30 个复选框中至少选中了一个复选框。可以在烧瓶中做吗?

这是 3 个按钮的 Python 代码

button1 = BooleanField('button1')
button2 = BooleanField('button2')
button3 = BooleanField('button3')

这是 3 个按钮的 Jinja2 代码

{{ form.button1(class="form-checkbox-input") }}
{{ form.button1.label(class="form-check-label") }}<br>
{{ form.button2(class="form-checkbox-input") }}
{{ form.button2.label(class="form-check-label") }}<br>
{{ form.button3(class="form-checkbox-input") }}
{{ form.button3.label(class="form-check-label") }}<br>

【问题讨论】:

    标签: python checkbox jinja2 flask-wtforms


    【解决方案1】:
    button1 = BooleanField('button1')
    button2 = BooleanField('button2')
    button3 = BooleanField('button3')
    

    这是处理数组的一种相当低效的方法(就您必须编写的内容而言,而不是您的代码速度而言)。您可能需要考虑使用 actual 数组,例如(a):

    buttonArray = []
    for idx in range(30):
        # F-strings relatively recent Python, you could go back
        # to "button%d".format(idx + 1) if need be.
    
        buttonArray.append(BooleanField(f'button{idx + 1}'))
    

    然后你可以用它来检查一个或多个是否为真:

    if any(buttonArray):
        atLeastOneTrue()
    

    类似这样的东西来处理每个真正的元素:

    for idx in range(len(buttonArray)):
        if buttonArray[idx]:
            print(f'button{idx + 1} is true')
    

    (a) 请记住,我对 Jinja2 知之甚少,但如果您可以在 点将它们设为数组以使其平衡,我不会感到惊讶高效。

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 2015-01-10
      • 1970-01-01
      • 2020-10-28
      • 2015-12-18
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多