Читаем Автостопом по Python полностью

Мы рекомендуем выбирать Jinja2 (http://jinja.pocoo.org/) в качестве библиотеки шаблонов для новых веб-приложений Python. Используется в качестве движка по умолчанию в Flask и генераторе документации для Python Sphinx (http://www.sphinx-doc.org/), может применяться в Django, Pyramid и Tornado. Она работает с основанным на тексте языком шаблонов, поэтому подойдет для генерации любой разметки, а не только HTML.

Позволяет настраивать фильтры, теги, тесты и глобальные переменные. Предоставляет возможность добавлять логику в шаблоны, что сокращает объемы кода.

Рассмотрим важные теги Jinja2:

{# Это комментарий, он выделяется решеткой и фигурными скобками. #}

{# Так можно добавить переменную: #}

{{title}}

{# Так можно определить именованный блок, который можно заменить #}

{# на шаблон-потомок. #}

{% block head %}

This is the default heading.

{% endblock %}

{# Так можно выполнить итерирование: #}

{% for item in list %}

  • {{ item }}
  • {% endfor %}

    Рассмотрим пример сайта в комбинации с веб-сервером Tornado, описанным в подразделе «Tornado» текущего раздела:

    # импортируем Jinja2

    from jinja2 import Environment, FileSystemLoader

    # импортируем Tornado

    import tornado.ioloop

    import tornado.web

    # Загружаем файл шаблона templates/site.html

    TEMPLATE_FILE = "site.html"

    templateLoader = FileSystemLoader( searchpath="templates/" )

    templateEnv = Environment( loader=templateLoader )

    template = templateEnv.get_template(TEMPLATE_FILE)

    # Список популярных фильмов

    movie_list = [

    [1,"The Hitchhiker's Guide to the Galaxy"],

    [2,"Back to the Future"],

    [3,"The Matrix"]

    ]

    # Метод template.render() возвращает строку, содержащую отрисованный HTML

    html_output = template.render(list=movie_list, title="My favorite movies")

    # Обработчик для основной страницы

    class MainHandler(tornado.web.RequestHandler):

    def get(self):

    # Возвращает отрисованную строку шаблона запросу браузера

    self.write(html_output)

    # Присваиваем обработчик на сервер (127.0.0.1:PORT/)

    application = tornado.web.Application([

    (r"/", MainHandler),

    ])

    PORT=8884

    if __name__ == "__main__":

    # Настраиваем сервер

    application.listen(PORT)

    tornado.ioloop.IOLoop.instance().start()

    Файл base.html может быть использован в качестве основы для всех страниц сайта. В этом примере они могли бы быть реализованы в блоке content (в данный момент пуст):

    {{title}} - My Web Page

    {# В следующей строке будет добавлено содержимое шаблона site.html #}

    {% block content %}{% endblock %}

    {% block footer %}

    © Copyright 2013 by you.

    {% endblock %}

    Перейти на страницу:

    Похожие книги

    Из жизни попаданцев
    Из жизни попаданцев

    Уважаемые читатели! Этот фанфик не пропагандирует идеи национал-социализма и идеалы СС. Автор считает, что лучше всего в непривычный мир может вписаться разведчик или диверсант. Учитывая начало фика, лучшим кандидатом на роль главного героя оказался немец. Автор много читал про диверсантов времен ВМВ. Образ главного героя собирательный, автор использовал факты биографии некоторых друзей и подчиненных Отто Скорцени. Если по каким-либо причинам такой главный герой является для вас неприемлемым, то, убедительная просьба, ПРОСТО НЕ ЧИТАЙТЕ.Ну, а для тех, кто всё-таки решился... В 1945 году Дамблдор и Гриндевальд проводили некий ритуал. Ритуал сорвал офицер СС… «Внизу у лестницы обнаружился еще один труп. Его унесли вместе с трупом красноглазого. Насколько я понял, это был хозяин дома и муж Лили, а также отец маленького Гарри, некий Джеймс Поттер. Честно говоря, я даже обрадовался этому обстоятельству. Во-первых, муж точно заметил бы, что с женой что-то не так, а во-вторых, только мужа мне и не хватало. В-третьих, в гостиной обнаружилась газета со странными движущимися картинками. А на газете была дата… 31 октября 1981 года…»Да-да, мать маленького Гарри осталась жива. Чудом уцелела. Вот, только...

    Алексей Бухтояров , Заязочка , Заязочка

    Неотсортированное / Фанфик / Попаданцы