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
Работа со статикой в Django
Search
Mike Yumatov
May 29, 2012
Programming
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Работа со статикой в Django
Mike Yumatov
May 29, 2012
More Decks by Mike Yumatov
See All by Mike Yumatov
SaltStack
yumike
0
500
Python
yumike
3
990
VCS
yumike
1
310
Other Decks in Programming
See All in Programming
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
330
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
310
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
640
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
190
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.5k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.3k
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
170
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
210
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
600
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
220
はてなアカウント基盤 State of the Union
cockscomb
1
960
Featured
See All Featured
For a Future-Friendly Web
brad_frost
183
10k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Docker and Python
trallard
47
3.9k
Designing Powerful Visuals for Engaging Learning
tmiket
1
430
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
210
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Chasing Engaging Ingredients in Design
codingconduct
0
230
Color Theory Basics | Prateek | Gurzu
gurzu
0
370
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
320
Rails Girls Zürich Keynote
gr2m
96
14k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Transcript
Работа со статикой в Django
Проблемы • количество файлов статики на странице • размеры файлов
• Less, Stylus => CSS • Co3eeScript, ClojureScript => JavaScript • компиляция шаблонов на клиенте
К чему они приводят • появляется огромный script.js (style.css), в
котором много тысяч строк • комментариев нет • код плохо читается • табуляция вместо пробелов (экономия байтов же!) • Less, Co3eeScript и т.п. не используются
Что нужно от инструмента • объединение файлов статики в один
• минификация и gzip-сжатие кода • поддержка Less, Stylus, Co3eeScript и т.д. • прозрачная и незаметная работа • удобная отладка
Что уже есть • django_compressor • webassets • другие библиотеки,
похожие на webassets • django-gears (порт Sprockets)
django_compressor {% load compress %} {% compress js %} <script
src="/static/js/models.js"></script> <script src="/static/js/collections.js"></script> <script src="/static/js/views.js"></script> <script src="/static/js/router.js"></script> <script src="/static/js/application.js"></script> {% endcompress %} <!-- на выходе будет нечто подобное: --> <script src="/static/CACHE/js/34fe95a4b234.js"></ script>
webassets register('application', Bundle( 'js/models.js', 'js/collections.js', 'js/views.js', 'js/router.js', 'js/application.js', output='js/gen/application.js', ))
# в шаблоне: {% load assets %} {% assets "application" %} <script src="{{ ASSET_URL }}"></script> {% endassets %}
django-gears /* * application.js * * =require models * =require
collections * =require_directory templates * =require views * =require router */ $(function() { new Router(); Backbone.history.start({pushState: true}); });
django-gears <script src="{{ STATIC_URL }}js/application.js"></script>
django-gears: отладка {% load gears %} {% js_asset_tag "js/application.js" %}
django-gears: отладка <!-- DEBUG = True --> <script src="/static/js/models.js?body=1"></script> <script
src="/static/js/collections.js?body=1"></script> <script src="/static/js/views.js?body=1"></script> <script src="/static/js/router.js?body=1"></script> <script src="/static/js/application.js?body=1"></script> <!-- DEBUG = False --> <script src="/static/js/application.js"></script>
django-gears • http://git.io/gears • обертка над библиотекой Gears • еще
есть Flask-Gears и gears-cli
Зависимости • require • require_self • require_directory • require_tree (скоро)
• depend_on (скоро)
Компиляция в CSS и JS • Из коробки поддерживаются: •
Less • Stylus • Co3eeScript • Handlebars • Цепочка расширений определяет процедуру компиляции: • application.js.co3ee • style.css.styl
Минификация • slimit (Python) • cssmin (Python) • UglifyJS (node.js)
• clean-css (node.js)
Использование python manage.py runserver
Использование python manage.py collectassets python manage.py collectstatic
Спасибо за внимание Вопросы? • @yumatov • http://trilandev.com • https://github.com/yumike
• https://github.com/trilan