Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Jinja2 в Django
Search
Moscow Python Meetup
PRO
October 31, 2013
Programming
0
900
Jinja2 в Django
Владимир Филонов
В двух словах и нескольких цифрах о шаблонизаторе Jinja2 и его применении в Django
Moscow Python Meetup
PRO
October 31, 2013
Tweet
Share
More Decks by Moscow Python Meetup
See All by Moscow Python Meetup
Moscow Python Meetup №90, Алексей Жиряков (онлайн-кинотеатр KION, TechLead Backend команды витрины). Remote Config и АБ-эксперименты
moscowdjango
PRO
0
73
Moscow Python Meetup №90. Александр Ковалев (IVA Technologies, руководитель группы разработки бизнес логики). SPA без скриптизеров =)
moscowdjango
PRO
0
88
Moscow Python Meetup №90. Антон Ершов (Самолет, руководитель функции бэкенд 10D). SAGA: Координации в мире микросервисов
moscowdjango
PRO
0
74
Moscow Python Meetup №89 Алексей Жиряков (онлайн-кинотеатр KION, TechLead Backend команды витрины). Доверяй, но проверяй: как KION обрабатывает свыше 400М продуктовых событий в сутки.
moscowdjango
PRO
0
67
Moscow Python Meetup №88. Евгений Блинов (VK, Руководитель команды). Токены отмены как паттерн и как библиотека cantok
moscowdjango
PRO
0
120
Moscow Python Meetup №89 Павел Мамаев (Сбер, Ведущий инженер по разработке). Классификация запросов клиентов. Дёшево и сердито
moscowdjango
PRO
0
62
Moscow Python Meetup №88. Александр Винокуров (Группа компаний "Самолет", руководитель группы разработки). Практическая сторона тестов
moscowdjango
PRO
0
85
Moscow Python Meetup №88. Иван Елфимов (Ostrovok.ru, тимлид). Переход от Statsd к Prometheus в большом Django-проекте
moscowdjango
PRO
0
95
Moscow Python Meetup №88. Александр Гончаров (Reef Technologies, старший разработчик). Рекрутинг на максималках: что бывает, если наймом занимаются сами программисты
moscowdjango
PRO
0
77
Other Decks in Programming
See All in Programming
君たちはどうコードをレビューする (される) か / 大吉祥寺.pm
utgwkk
15
8.5k
CSC307 Lecture 07
javiergs
PRO
0
220
Composing an API the *right* way (Droidcon Berlin 2024)
zsmb
1
450
Folding Cheat Sheet #7
philipschwarz
PRO
0
150
Introduction to GitOps
hwchiu
0
110
Google's Recipe for Scaling (Web) Security – LocoMocoSec 2024
lweichselbaum
0
170
入社1ヶ月でここまでやった!Findy Toolsインフラ支援の最適化
rvirus0817
6
1.4k
AWSでゲームサーバーを運用! Amazon GameLiftのお話
iriikeita
0
200
開発部に不満を持っていたCSがエンジニアにジョブチェンしてわかった「勝手に諦めない」ことの大切さ
sakuraikotone
28
16k
12年前の『型システム入門』翻訳の思い出話
mame
11
1.2k
Rustのweb開発を助ける 便利なツール紹介
yuki0418
1
190
Terraformテスト入門
msato
0
540
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
Producing Creativity
orderedlist
PRO
340
39k
5 minutes of I Can Smell Your CMS
philhawksworth
200
19k
How to train your dragon (web standard)
notwaldorf
79
5.5k
The Mythical Team-Month
searls
217
43k
Thoughts on Productivity
jonyablonski
64
4.1k
4 Signs Your Business is Dying
shpigford
178
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
399
65k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
121
18k
Side Projects
sachag
451
42k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
52k
Transcript
Jinja2 в Django В двух словах
Django-шаблоны медленные. Печально, но факт.
Зато Jinja2 быстрые
И синтаксис почти такой же
Скобки при вызове методов. Это позволяет вызывать их с аргументами
class Person(models.Model): … def get_friends(count): …
# Django {{ person.get_friends }} Увы, это вызовет исключение и
инструкция не выполнится. И нам понадобится, например, делать templatetag # Jinja {{ person.get_friends(10) }}
И фильтры, кстати, тоже со скобками {{ my_var|some_filter("arg1", "arg2") }}
{{ }} не только для переменных, но и для глобальных
функций* В Jinja простые templatetags это просто функции зарегистрированные в окружении. Сложные теги реализовываются в виде плагинов.
django.template.Library.simple_tag(some_function) vs jinja2.Environment.globals[key] = function_or_var
Чтобы перейти, надо решить несколько основных проблем
Нет большинства привычных фильтров и тегов
Но не беда - большинство можно просто добавить в окружение
Jinja и они будут работать
from django.template.defaultfilters import escapejs jinja2.Environment.globals[“escapejs”] = escapejs
Или взять что-то из готовых решений https://github.com/niwibe/django-jinja/ https://bitbucket.org/trevor/chouwa http://google.com =)
+ Значительный прирост скорости + ИМХО - более человеческий синтаксис
- Не из коробки - Большинство contrib и внешних django-приложений может потребовать бубна
Производительность
Jinja2 примерно в 10-20 раз быстрее чем Django*
http://mindref.blogspot.ru/2012/10/python-templates-benchmark.html
Спасибо! email:
[email protected]
fb: https://www.facebook.com/pyhoster