Я планирую использовать систему шаблонов Django несколько необычным способом. Мне нужно приложение, которое позволит мне легко создать простые формы «заполнить пробел», и я решил использовать шаблоны Django с пользовательскими тегами для создания форм.Использование шаблонов Django для создания форм
Вот набросок того, что я имею в виду:
<p>
This is the <i>form</i>. Two plus two is {% gap four 4 vier %}.<br>
The best programming language is {% case_gap Python Haskell %}.
</p>
{% if all_correct %}
You are smart.
{% else %}
<input type="submit">
{% endif %}
Идея заключается в том, что *gap
теги визуализации элемента управления для ввода текста, смотреть в контексте, чтобы увидеть, если ответ на них был отправлен, и если ответ правильный, отметьте текстовые входы зеленым.
Вопрос заключается в том, как реализовать логику all_correct
. Простое решение состоит в том, чтобы добавить эту переменную в контекст, а затем сделать каждый тег *gap
обновить его на основе его правильного ответа, и, я считаю, это должно работать с моим примером. Но что, если я хочу переместить код {% if all_correct %}
в начало шаблона, где ни один из gaps
не был отображен, и, таким образом, никто из них еще не подтвердил свои ответы?
Похоже, мне нужно каким-то образом перебрать все теги *gap
, прежде чем начинать визуализацию шаблона, и [попросить их] проверить ответы, но я не знаю внутренних систем шаблонов достаточно хорошо, чтобы реализовать это , Или может быть совершенно другой и лучший способ.
Я думаю, вы пытаетесь сделать слишком много в шаблонах Django. Типичным подходом в Django было бы использовать [Django forms] (https://docs.djangoproject.com/en/1.8/topics/forms/#working-with-forms), чтобы выполнить проверку в представлении, а затем отобразить приводит к созданию шаблона. Возможно, вы сможете делать то, что хотите, погрузившись в внутренние элементы шаблона Django, но я бы не рекомендовал его. – Alasdair
@Alasdair Ну, технически, вы правы. Но формы Django слишком сложны, чтобы создавать формы, в которых я нуждаюсь.В принципе, мне нужен хороший язык для описания простых форм, и я думал, что вместо того, чтобы изобретать и внедрять что-то новое, я мог бы взломать существующий. – kirelagin
@kirelagin imo, это действительно не так сложно использовать для использования с формами Django. Все формы имеют префикс, чтобы избежать столкновения имен с полями, и если вы хотите использовать шаблон фабрики для построения списка форм, вы можете легко заполнить представление (и шаблон) с помощью как можно большего количества форм для опроса. Вы также можете проверить все формы в цикле. Если все верно, отобразите свое сообщение. – Brandon