как разобраться с порядком ввода-элементов с одинаковыми именами в Django? - PullRequest
0 голосов
/ 27 февраля 2020

Я новичок в использовании Django. Короче говоря, я хочу собирать данные, предоставленные пользователями. Например, я хочу собрать оценки многих предметов. По сути, я спроектирую элемент div, содержащий два элемента ввода с этими двумя именами: subject_name и score. Этот дизайн работает хорошо, если пользователь загружает оценку при каждом пост-запросе.

Почему пользователь хочет загрузить множество результатов за один пост-запрос?

Предполагается, что есть кнопка добавления для добавления нового элемента div, который содержит два одинаковых элемента ввода. После того, как пользователь нажмет кнопку отправки, переменная request.POST в Django будет содержать два списка, которые представляют предмет и оценку соответственно. Однако порядок значений в этих двух списках не гарантируется, что плохо по точности. Внешний и внутренний интерфейсы показаны ниже.

<!DOCTYPE html>
<html >
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
// many imports
<script>
// initialization
$(function () {
  // add-button configuration
  function new_div() {
      var el = `
        <div class="form-group">
            <label>value</label>
            <input type="text" name="value" value="">
            <label>class</label>
            <input type="text" name="subject_name" value="">
        </div>
      `
      $('#form4dsb').prepend(el)
   }
  $('#add_btn').on('click', new_div);
  
  // submit-button configuration
  $('#submit_btn').on('click', 
    function() {$('#form4dsb').submit()}
   );
}
</script>
</head>
<body>
  <div class="box-body">
      <form role="form" action="127.0.0.1/dsb" method="post" id="form4dsb">
        <button type="button" id="add_btn">more</button>
        <button type="button" id="submit_btn">submit</button>
      </form>
  </div>
</body>
</html>
# Django-part
from django.views import View
from django.http import HttpResponse

class Collector(View):
    def __init__(self):
        super().__init__()

    def post(self, request):
        for subject, score in zip(request.POST.getlist('subject_name'), request.POST.getlist('score')):
            print(subject, score)  # Are this binding correct?
        return HttpResponse(status=200, content='ok', )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...