Отображение информации с помощью тегов django

Я пишу сайт по Django, цель сайта - создать тест для оценки знаний студентов

Мне нужна помощь с выводом вариантов ответов на вопрос

Я держу вопросы в списке, а варианты ответов - во вложенном списке например:

questions = ["question1", "question2", "question3"]

answers = [["answer1", "answer2",answer3 ],["answer1", "answer2",answer3,answer4 ],
["answer1","answer2",answer3 ]]`

и мне нужно, чтобы эти данные отображались в следующем формате:

question1  
   answer1
   answer2
   answer3

question2  
   answer1  
   answer2  
   answer3  
   answer4 

question3  
   answer1  
   answer2  
   answer3

вот мой код, он работает не очень корректно, я знаю, я еще не придумал, как реализовать его в тегах Django

 {% for question in questions %}
            <p>{{question}}</p>
            <ul>
                {% for answer in answers %}

                    {% for current in answer %}

                      <li><input type="radio" id="option{{ forloop.parentloop.counter }}_{{ forloop.counter }}" name="answer{{ forloop.parentloop.counter }}" value="{{ current }}">{{ current }}</li>

                    {% endfor %}

                {% endfor %}    
            </ul>
        {% endfor %}
{% for question, answer_list in zip(questions, answers) %}
{{ question }}
<ul>
    {% for answer in answer_list %}
        <li>{{ answer }}</li>
    {% endfor %}
</ul>

{% endfor %}

Это просто вариант

Выполните присоединение в view:

def my_view(request):
    questions = ['question1', 'question2', 'question3']
    answers = [
        ['answer11', 'answer12', 'answer13'],
        ['answer21', 'answer22', 'answer23', 'answer24'],
        ['answer31', 'answer32', 'answer33'],
    ]
    return render(request, 'some_template.html', {'qas': zip(questions, answers)})

и в шаблоне работают с:

{% for question, answers in qas %}
  <p>{{question}}</p>
  <ul>
  {% for answer in answers %}
    <li><input type="radio" id="option{{ forloop.parentloop.counter }}_{{ forloop.counter }}" name="answer{{ forloop.parentloop.counter }}" value="{{ current }}">{{ current }}</li>
  {% endfor %}    
  </ul>
{% endfor %}

При этом то, что вы делаете, - это примитивная одержимость [refactoring.guru]: выражение данных в терминах списков, строк и т. д. Если данные имеют определенную структуру, то логичнее определить для них отдельный класс и добавить в него логику. Например, вывести id="" для опции, и логику для разбора данных обратно.

Вернуться на верх