HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В этом уроке вы узнаете, что такое шаблонизаторы и как работать с ними.</p>
1 <p>В этом уроке вы узнаете, что такое шаблонизаторы и как работать с ними.</p>
2 <h2>Зачем нужны шаблонизаторы</h2>
2 <h2>Зачем нужны шаблонизаторы</h2>
3 <p>Для начала посмотрим на такой пример кода:</p>
3 <p>Для начала посмотрим на такой пример кода:</p>
4 <p>В этом примере в ответ на запрос главной страницы обработчик отдаст строчку 'Main Page'. Такой пример хорошо подходит для демонстрации, но обычно браузер ожидает HTML-страницу. Причем страница может быть достаточно большой - десятки и сотни килобайтов. А теперь попробуем создавать HTML так:</p>
4 <p>В этом примере в ответ на запрос главной страницы обработчик отдаст строчку 'Main Page'. Такой пример хорошо подходит для демонстрации, но обычно браузер ожидает HTML-страницу. Причем страница может быть достаточно большой - десятки и сотни килобайтов. А теперь попробуем создавать HTML так:</p>
5 <p>Такой код достаточно быстро превратится в нечто нечитаемое. Для работы с HTML во фреймворках используют специальные библиотеки -<strong>шаблонизаторы</strong>. Принцип их работы такой:</p>
5 <p>Такой код достаточно быстро превратится в нечто нечитаемое. Для работы с HTML во фреймворках используют специальные библиотеки -<strong>шаблонизаторы</strong>. Принцип их работы такой:</p>
6 <ul><li>В отдельном файле заранее описывается шаблон</li>
6 <ul><li>В отдельном файле заранее описывается шаблон</li>
7 <li>Во время работы программы шаблон загружается и превращается в HTML</li>
7 <li>Во время работы программы шаблон загружается и превращается в HTML</li>
8 </ul><p>При этом шаблон может содержать как обычные HTML-тэги, так и специальную разметку. Она позволяет подставлять в HTML значения, отображать и прятать отдельные фрагменты по условию, размножать фрагменты в цикле, и тому подобное. Вот пример шаблона для популярного шаблонизатора Jinja:</p>
8 </ul><p>При этом шаблон может содержать как обычные HTML-тэги, так и специальную разметку. Она позволяет подставлять в HTML значения, отображать и прятать отдельные фрагменты по условию, размножать фрагменты в цикле, и тому подобное. Вот пример шаблона для популярного шаблонизатора Jinja:</p>
9 <p>При чтении такого шаблона библиотека подставляет переменные и выполняет код логики каждый раз. Это позволяет использовать один и тот же шаблон для выдачи разных страниц, отличающихся только частью содержимого (чаще всего - подставляемыми переменными). Стоит отметить, что многие шаблонизаторы можно использовать для формирования произвольных текстов, а не только HTML.</p>
9 <p>При чтении такого шаблона библиотека подставляет переменные и выполняет код логики каждый раз. Это позволяет использовать один и тот же шаблон для выдачи разных страниц, отличающихся только частью содержимого (чаще всего - подставляемыми переменными). Стоит отметить, что многие шаблонизаторы можно использовать для формирования произвольных текстов, а не только HTML.</p>
10 <h2>Безопасность</h2>
10 <h2>Безопасность</h2>
11 <p>Об этом редко говорят во время обучения, но безопасность крайне важна при работе с HTML-формами и шаблонами в целом. Не понимая основ защиты, вы можете сделать ошибку, которая приведет к фатальным последствиям для проекта. Например, отсутствие экранирования пользовательских данных приведет к тому, что у злоумышленника появится возможность провести<a>XSS-атаку</a>.</p>
11 <p>Об этом редко говорят во время обучения, но безопасность крайне важна при работе с HTML-формами и шаблонами в целом. Не понимая основ защиты, вы можете сделать ошибку, которая приведет к фатальным последствиям для проекта. Например, отсутствие экранирования пользовательских данных приведет к тому, что у злоумышленника появится возможность провести<a>XSS-атаку</a>.</p>