Создание формы с переменным номером флажков в Django

#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}}, и это сработало! Большое спасибо!