Отображение информации с помощью тегов 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=""
для опции, и логику для разбора данных обратно.