python-04
.pdfДостоинства и недостатки
Минусы:
Увеличение объема кода
Необходимость соблюдения заранее заданного интерфейса
Для поддержки разработки требуются более квалифицированные специалисты
Êплюсам отнес¼м следующее:
Несомненно более гибкий код
Возможность повторного использования каждой из тр¼х составных частей MVC
Безболезненная замена модели (другие алгоритмы расчета, способа хранения данных и т.д.)
Достаточно просто перейти от одного представления, к другому (от HTML к XML или JSON)
Шаблоны Django I
Определение
Шаблон Django это строка текста, которая предназначена для разделения представления документа от его данных. Шаблон определяет места подстановки и различные виды основной логики (шаблонные теги), которая управляет отображением документа. Обычно, шаблоны используются для создания HTML, но шаблоны Django также способны участвовать в генерации любого текстового формата.
Cледующий шаблон описывает HTML страницу, которая благодарит посетителя за заказ, отправленный компании. Рассматривайте его как вид письма:
Шаблоны Django II
<html><body> <h1>Ordering notice</h1>
<p>Dear {{ person_name }},</p>
<p>Thanks for placing an order from {{ company }}.
It's scheduled to ship on {{ ship_date|date:"F j, Y" }}.</p> <p>Here are the items you've ordered:</p>
<ul>
{% for item in item_list %} <li>{{ item }}</li>
{% endfor %} </ul>
{% if ordered_warranty %}
<p>Your warranty information will be included in the packaging.</p> {% else %}
<p>You didn't order a warranty, so you're on your own when the products inevitably stop working.</p>
{% endif %}
<p>Sincerely,<br />{{ company }}</p> </body></html>
Пояснения I
Любой текст взятый в фигурные скобки и проценты (т.е., {% if ordered_warranty %} ) является шаблонным тегом. Определение тега достаточно простое: тег просто указывает шаблонной системе ¾сделать что-то¿.
Вышепривед¼ный шаблон содержит теги
for ({% for item in item_list %}) работает почти
так же как и оператор for языка Python, позволяя вам циклически обрабатывать каждый элемент последовательности.
if ({% if ordered_warranty %}) работает аналогично логическому оператору if.
Пояснения II
В данном примере, тег проверяет является ли True значением ordered_warranty . Если это так, шаблонная система отобразит вс¼, что находится между {% if ordered_warranty %} и {% else %}.
Наконец, второй параграф данного шаблона содержит пример использования фильтра, который предоставляет наиболее удобный способ изменения формата переменной. В данном примере, {{ ship_date|date:"F j, Y" }} , мы переда¼м значение переменной ship_date фильтру date, указывая для него аргументы "F j, Y". Фильтр date форматирует дату в соответствии с указанным форматом. Фильтры подключаются к переменным с помощью символа |, аналогично Unix потокам.