Jinja2 в Django

Jinja2 в Django

Владимир Филонов

В двух словах и нескольких цифрах о шаблонизаторе Jinja2 и его применении в Django

53b0434aded1fb944ec3037c382158c1?s=128

Moscow Python Meetup

October 31, 2013
Tweet

Transcript

  1. Jinja2 в Django В двух словах

  2. Django-шаблоны медленные. Печально, но факт.

  3. Зато Jinja2 быстрые

  4. И синтаксис почти такой же

  5. Скобки при вызове методов. Это позволяет вызывать их с аргументами

  6. class Person(models.Model): … def get_friends(count): …

  7. # Django {{ person.get_friends }} Увы, это вызовет исключение и

    инструкция не выполнится. И нам понадобится, например, делать templatetag # Jinja {{ person.get_friends(10) }}
  8. И фильтры, кстати, тоже со скобками {{ my_var|some_filter("arg1", "arg2") }}

  9. {{ }} не только для переменных, но и для глобальных

    функций* В Jinja простые templatetags это просто функции зарегистрированные в окружении. Сложные теги реализовываются в виде плагинов.
  10. django.template.Library.simple_tag(some_function) vs jinja2.Environment.globals[key] = function_or_var

  11. Чтобы перейти, надо решить несколько основных проблем

  12. Нет большинства привычных фильтров и тегов

  13. Но не беда - большинство можно просто добавить в окружение

    Jinja и они будут работать
  14. from django.template.defaultfilters import escapejs jinja2.Environment.globals[“escapejs”] = escapejs

  15. Или взять что-то из готовых решений https://github.com/niwibe/django-jinja/ https://bitbucket.org/trevor/chouwa http://google.com =)

  16. + Значительный прирост скорости + ИМХО - более человеческий синтаксис

    - Не из коробки - Большинство contrib и внешних django-приложений может потребовать бубна
  17. Производительность

  18. Jinja2 примерно в 10-20 раз быстрее чем Django*

  19. http://mindref.blogspot.ru/2012/10/python-templates-benchmark.html

  20. Спасибо! email: i@vladimir.filonov.name fb: https://www.facebook.com/pyhoster