#django
#django
Вопрос:
Я создаю сайт, где люди могут проходить тесты в Django.
Если пользователь упоминает, что он хочет пройти определенный тест, я передаю его в функцию просмотра, соответствующую этому тесту. В этой функции просмотра я генерирую список вопросов, используя модель для этого конкретного теста, и передаю его в функции Httpresponse в html-файл.
Что я хочу сделать, так это сгенерировать переменную номер флажков, n * 4, где n = количество вопросов в тесте. Для каждого флажка должен быть установлен атрибут name. Например, я мог бы установить их как t1, t2 .. tz. Когда пользователь нажимает отправить, он переходит на другую страницу, где я проверяю ответы.
Язык шаблонов в Django похож на Python, но не допускает присвоения переменных. Как бы я тогда назначил имена флажкам, поскольку я заранее не знаю номер флажков?
Комментарии:
1. Можете ли вы нарисовать макет, чтобы показать, что вы пытаетесь сделать? Иногда я нахожу, что форма django имеет некоторые ограничения, когда дело доходит до динамического количества виджетов или интенсивных действий AJAX. В таком случае я просто вернусь к основам с созданием формы вручную. Это грубо и не соответствует требованиям DRY, но она выполняет свою работу.
Ответ №1:
Если вы используете цикл for для отображения своих вопросов, вы можете использовать forloop.counter
фильтр шаблонов, чтобы получить доступ к переменной counter, которая позволит вам перечислять флажки. Например,
{% for question in questions_list %}
{{ question }}
<input type="checkbox" name="t{{ forloop.counter }}"/>
{% endfor %}
Комментарии:
1. Да, просто небольшая модификация вашего кода, добавление двойных кавычек в конце forloop.counter}}, и это сработало! Большое спасибо!