Django – 从在循环中生成的HTML选择选项中获取值

huangapple go评论84阅读模式
英文:

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

问题

  1. 我有一个HTML页面,在页面上设置了一个循环来列出乐队的名字。我还有一个选择框,让用户对他们看过的乐队进行评分。问题是,因为每个选择框选项都是在我的循环中生成的,我不知道如何在我的views.py文件中访问每个评分。请帮忙?
  2. HTML代码
  3. {% for band in thursday_apex %}
  4. <li> {{ band.band_name }}
  5. {{ }}
  6. <select name="thursday_apex">
  7. <option value="0">没看过</option>
  8. <option value="1">1</option>
  9. <option value="2">2</option>
  10. <option value="3">3</option>
  11. <option value="4">4</option>
  12. <option value="5">5</option>
  13. <option value="6">6</option>
  14. <option value="7">7</option>
  15. <option value="8">8</option>
  16. <option value="9">9</option>
  17. <option value="10">10</option>
  18. </select>
  19. </li>
  20. {% endfor %}
英文:

i have a html page where i have set up a loop to list band names on a page. I also have a select option box so users can rate bands they have seen. Problem is because each of the select options is generated in my loop i don't know how i'm going to access each rating back in my views.py file. Please help?

html code

  1. {% for band in thursday_apex %}
  2. <li> {{ band.band_name }}
  3. {{ }}
  4. <select name="thursday_apex">
  5. <option value="0">Didn't watch</option>
  6. <option value="1">1</option>
  7. <option value="2">2</option>
  8. <option value="3">3</option>
  9. <option value="4">4</option>
  10. <option value="5">5</option>
  11. <option value="6">6</option>
  12. <option value="7">7</option>
  13. <option value="8">8</option>
  14. <option value="9">9</option>
  15. <option value="10">10</option>
  16. </select>
  17. </li>
  18. {% endfor %}

答案1

得分: 0

你在for循环中对每个迭代的数据都使用了相同的name属性,要访问每个select元素的value,需要像这样操作:

你的HTML:

  1. {% for band in thursday_apex %}
  2. <li>{{ band.band_name }}
  3. <select name="thursday_apex_{{ band.id }}">
  4. // 选项
  5. </select>
  6. </li>
  7. {% endfor %}

你的views.py:

  1. def function(request):
  2. thursday_apex = YOUR_BAND_CLASS.objects.all()
  3. my_list = []
  4. if request.method == 'POST':
  5. for item in thursday_apex:
  6. select_value = request.POST.get('thursday_apex_' + str(item.id))
  7. if select_value:
  8. my_list.append({item.id: select_value})
  9. print(my_list)

现在,你已经将所有select的值存储在变量my_list中。

英文:

you are using the same name attribute for each iterated data in for loop, to access the value of each select element you need to do it like this:

your html:

  1. {% for band in thursday_apex %}
  2. &lt;li&gt; {{ band.band_name }}
  3. &lt;select name=&quot;thursday_apex_{{band.id}}&quot;&gt;
  4. // options
  5. &lt;/select&gt;
  6. &lt;/li&gt;
  7. {% endfor %}

your views.py:

  1. def function(request):
  2. thursday_apex = YOUR_BAND_CLASS.objects.all()
  3. list = []
  4. if request.method == &#39;POST&#39;:
  5. for item in thursday_apex:
  6. select_value = request.POST.get(&#39;thursday_apex_&#39; + str(item.id))
  7. if select_value:
  8. list.append({item.id: select_value})
  9. print(list)

now you have all the select values inside the variable list

huangapple
  • 本文由 发表于 2023年6月1日 16:22:16
  • 转载请务必保留本文链接:https://go.coder-hub.com/76379963.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定