检查是否在 Jinja2 模板中未选中复选框

Check if checkbox in NOT checked in a Jinja2 template

在我的 jinja2 模板中,我有一个复选框列表。最初他们都应该被检查。然后用户可以取消选中其中的一些以过滤掉东西。

<p><input name="name1" type="checkbox" checked /> blabla1 </p>
<p><input name="name2" type="checkbox" checked /> blabla2 </p>
<p><input name="name3" type="checkbox" checked /> blabla3 </p>
<p><input name="name4" type="checkbox" checked /> blabla4 </p>
<p><input name="name5" type="checkbox" checked /> blabla5 </p>

例如,如果未选中第一个复选框,我需要在参数列表中获取 name1 及其值(类似于 "off" 或 "false")( request.args.keys()) 无论如何。 到目前为止,如果未选中第一个复选框,我只是在 args 列表中没有它:

/query=somequery&blabla2=on&blabla3=on&blabla4=on&blabla5=on

如何在 jinja2 模板中做这样的事情:

<p><input name="name1" type="checkbox" {% if checked %}
                                           value="on" 
                                       {% else %} 
                                           value="off" 
                                       {% endif %} /> 
        blabla1 </p>

并获取具有相应值的所有参数:

/query=somequery&blabla1=off&blabla2=on&blabla3=on&blabla4=on&blabla5=on

我的应用在 Flask/Werkzeug.

同时我设法自己解决了它。这是我的做法:
1. 给所有的复选框取一个相同的名字
2.Attributes 每个复选框的不同值: `

    <p><input name="type1" type="checkbox" checked value="val1"/> blabla1 </p>
    <p><input name="type1" type="checkbox" checked value="val2"/> blabla2 </p>
    <p><input name="type1" type="checkbox" checked value="val3"/> blabla3 </p>
    <p><input name="type1" type="checkbox" checked value="val4"/> blabla4 </p>
    <p><input name="type1" type="checkbox" checked value="val5"/> blabla5 </p>
  1. 在我的应用代码中:
    将 arg 值列表与 "initial list" 与所有可能值的集合进行比较。如果缺少某些内容 - 将其添加到新列表以进行进一步处理。
    ar = request.args

    > #This will produce a structure of this kind
    > ImmutableMultiDict([('query', u'q'), ('type1', u'val1'),
    > ('type1', u'val2')])
    
    > #Then I just get a list of values of 'type1' with the getlist function:
    
     imd = ar.getlist('type1')
     lst_init =['val1', 'val2', 'val3', 'val4', 'val5']
    
    
    > #and compare the 2 list adding unchecked items to the newlist
    newlist = []
    for x in imd:
       for y in lst_init:
          if y not in imd:
             if y not in newlist:
                   newlist.append(y)