Django - 从循环中生成的 html 中获取值 select options

Django - get value from html select options that have been generated in a loop

提问人:Wishmaster 提问时间:6/1/2023 更新时间:6/1/2023 访问量:30

问:

我有一个 HTML 页面,我在其中设置了一个循环来列出页面上的乐队名称。我还有一个选择选项框,以便用户可以对他们看到的波段进行评分。问题是因为每个选择选项都是在我的循环中生成的,我不知道我将如何访问我的 views.py 文件中的每个评级。请帮忙?

HTML 代码

{%  for band in  thursday_apex %}
<li> {{ band.band_name }}
    {{  }}
 <select name="thursday_apex">
    <option value="0">Didn't watch</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    </select>
    
</li>
{% endfor %}
HTML Django 循环

评论


答:

0赞 Mohammad Hussein Rostami 6/1/2023 #1

您在 for 循环中对每个迭代数据使用相同的属性,要访问每个元素的,您需要这样做:nameselect

您的 HTML:

{%  for band in  thursday_apex %}
<li> {{ band.band_name }}
 <select name="thursday_apex_{{band.id}}">
    // options
 </select>  
</li>
{% endfor %}

您的 views.py:

def function(request):
    thursday_apex = YOUR_BAND_CLASS.objects.all()
    list = []
    if request.method == 'POST':
        for item in thursday_apex:
            select_value = request.POST.get('thursday_apex_' + str(item.id))
            if select_value:
                list.append({item.id: select_value})
    print(list)

现在,您已经拥有了变量列表中的所有值select

评论

0赞 Mohammad Hussein Rostami 6/1/2023
确保 HTML 中的循环数据必须与 views.py 中的循环数据相同
0赞 Wishmaster 6/5/2023
以下代码是什么意思?如果select_value:是否在检查select_vaue是否有价值?似乎是某事的简写
0赞 Mohammad Hussein Rostami 6/5/2023
是的,它会检查它是否存在