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
880
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 №88. Александр Винокуров (Группа компаний "Самолет", руководитель группы разработки). Практическая сторона тестов
moscowdjango
PRO
0
31
Moscow Python Meetup №88. Иван Елфимов (Ostrovok.ru, тимлид). Переход от Statsd к Prometheus в большом Django-проекте
moscowdjango
PRO
0
30
Moscow Python Meetup №88. Александр Гончаров (Reef Technologies, старший разработчик). Рекрутинг на максималках: что бывает, если наймом занимаются сами программисты
moscowdjango
PRO
0
7
Moscow Python Meetup №87 Евгений Блинов (VK, руководитель команды). INSTLD: зависимости на автомате.
moscowdjango
PRO
0
46
Moscow Python Meetup №87. Сурен Хоренян (MTS AI). Hatch для сборки и распространения Python пакетов.
moscowdjango
PRO
0
57
Николай Хитров (Точка, Техлид). Мама, мы все тяжело больны!
moscowdjango
PRO
0
78
Moscow Python Meetup №86. Александр Гончаров (Reef Technologies, Senior Python Developer). Альтернативные питоны: что нового, и стоит ли оно того?
moscowdjango
PRO
0
120
Moscow Python Meetup №86. Александр Винокуров (Самолет, Engineering Manager). Технические собеседования — по обе стороны баррикад
moscowdjango
PRO
0
88
Moscow Python Meetup №86. Денис Аникин (Райффайзен банк, Community Lead). Базовый кодовый стиль хорошего Python-бэкенда
moscowdjango
PRO
0
350
Other Decks in Programming
See All in Programming
受託開発でGitLab CI を活用していく
xiombatsg
1
110
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Model Design
suzushin54
1
1.4k
Dockerで始めるAWS Lambda開発
stutkhd0709
13
2.5k
Kotlinを用いたDSL的な設計手法と使用上の注意
kohii00
3
530
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
130
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
1
290
The Future of C++ Interoperability: Insights from Porting a Game to Swift
teamhimeh
0
270
document.write再考
brn
5
2.5k
SwiftUI, Jetpack Composeの導入で変化した「家族アルバム みてね」のアプリ開発体験
hicka04
6
400
マイ隙間家具OSSたちのご紹介
karupanerura
2
150
設計の知識と技能で駆動するソフトウェア開発
masuda220
PRO
18
10k
プロンプトエンジニアリング入門
tomokusaba
2
970
Featured
See All Featured
The Invisible Side of Design
smashingmag
293
49k
Infographics Made Easy
chrislema
237
18k
Mobile First: as difficult as doing things right
swwweet
215
8.5k
Designing Experiences People Love
moore
135
23k
The Pragmatic Product Professional
lauravandoore
24
5.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
10
4.5k
Agile that works and the tools we love
rasmusluckow
323
20k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
Building a Modern Day E-commerce SEO Strategy
aleyda
15
6.3k
Git: the NoSQL Database
bkeepers
PRO
421
63k
Being A Developer After 40
akosma
56
580k
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