python 为迭代变量分配flash类别

jjhzyzn0  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(116)

我正在尝试将flash类别分配给一个可迭代变量,该变量将在表单中生成。
我的HTML:

<select name="values" size="10" multiple>
       {% with cols = get_flashed_messages
                       (category_filter="columns"),
                       vals = get_flashed_messages
                       (category_filter="{{val_by_col}}")%}
                   {% for col in cols %}
                       <optgroup label = {{ col }}>
                           {% for val in vals %}
                               <option>
                                   {{ val }}
                               </option>
                           {% endfor %}
                       </optgroup>
                   {% endfor %}
       {% endwith %}
       <input type=submit value=submit>
   </select>
</form>
**Yields HTML Select Form:**
 COLUMN 1
   ALL FLASH VALUES
 COLUMN 2
   ALL FLASH VALUES

但是,我想达到的目的是:

**IDEAL HTML Select Form:**
 COLUMN 1
   COLUMN 1 FLASH VALUES
 COLUMN 2
   COLUMN 2 FLASH VALUES

我试图通过Python中的一个增量式可迭代变量来实现这一点:

val_by_col = 0
  for col in col_list:
  val_by_col = int(val_by_col ) + 1
  flash(col, 'columns')
    for val in col:
      flash(val, category=val_by_col )

这样,我希望通过递增val_by_col,我可以像在字典中迭代键、值对一样使用flash。使用str()、f'" "'和""{{}}""的组合没有产生正确的结果。
也许我可以将这些值附加到一个嵌套字典中,然后以flash的形式迭代这些值以生成表单??谢谢!!

olqngx59

olqngx591#

我不知道如何用我最初的设想填充选择表单,所以我想出了一个折衷方案。
不要尝试在选择表单中分隔列/值:

<optgroup label=<column 1>>  
<options> all column 1 values
</options></optgroup> 
<optgroup label=<column 2>>  
<options> all column 2 values 
</options></optgroup>

相反,我在for循环中包含了该列,并将其与值一起闪现:

for col in enu_cols:
    flash(df.columns[int(col)], "message")
    for val in range(len(df[df.columns[int(col)]].unique())):
        message = f'[{col}] {df.columns[int(col)]}' \
                  f' - <{val}> {df[df.columns[int(col)]].unique()[val]}'
        flash(message, "val")

因此,它现在将显示在选择表单中:

<option> [column 1] value 1 </option>
<option> [column 1] value 2 </option>
<option> [column 2] value 1 </option>
<option> [column 2] value 2 </option>

相关问题