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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Moscow Python Meetup
PRO
October 31, 2013
Programming
0
950
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 №106. Евгений Блинов (The Mutating Company, Founder). Суперфункции
moscowdjango
PRO
0
71
Moscow Python Meetup №106. Валерий Карпузов (SmartFX, Team Lead). Пиши, сокращай — Code Golf на Python
moscowdjango
PRO
0
110
Moscow Python Meetup №106. Николай Казак (Технический лидер роботизации бизнес-процессов, МТС Финтех). RPA по-взрослому
moscowdjango
PRO
0
48
Moscow Python Meetup №105. Кирилл Гладких (ООО Штаб, Python разработчик). Как вайбкодить по-сениорски
moscowdjango
PRO
0
130
Moscow Python Meetup №105. Пётр Андреев (МФТИ, лектор по курсу Advanced Python). Дотянуться до кремния. HighLoad Python: SIMD, GPU
moscowdjango
PRO
0
67
Moscow Python Meetup №105. Антон Важнецов (K2 Cloud, Тимлид). Подход к глубоким изменениям. Миграция SDN в боевом облаке на Python
moscowdjango
PRO
0
52
Moscow Python Meetup №104. Как научить Алису рецептам дореволюционной кухни
moscowdjango
PRO
0
50
Moscow Python Meetup №104. Оптимизация сервиса АБ тестирования или как уйти от Django ORM к Fastapi query builder
moscowdjango
PRO
0
80
Moscow Python Meetup №104. CI/CD Pytest для тестирования качества данных здравоохр. в Великобритании
moscowdjango
PRO
0
59
Other Decks in Programming
See All in Programming
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
CSC307 Lecture 08
javiergs
PRO
0
670
SourceGeneratorのススメ
htkym
0
200
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
CSC307 Lecture 07
javiergs
PRO
0
550
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
120
Architectural Extensions
denyspoltorak
0
290
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
MUSUBIXとは
nahisaho
0
130
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
2.3M
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
The Limits of Empathy - UXLibs8
cassininazir
1
220
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Are puppies a ranking factor?
jonoalderson
1
2.7k
Fireside Chat
paigeccino
41
3.8k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
62
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
From π to Pie charts
rasagy
0
120
For a Future-Friendly Web
brad_frost
182
10k
How to Talk to Developers About Accessibility
jct
2
130
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