Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Работа со статикой в Django
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Mike Yumatov
May 29, 2012
Programming
240
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
510
Python
yumike
3
990
VCS
yumike
1
310
Other Decks in Programming
See All in Programming
残高管理から台帳サービスへの進化
artoy
1
200
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
590
ジョジョの世界をXRで再現する
mofurune
0
160
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
880
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
270
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
JIS keyboard support in Omarchy
lef237
0
110
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
contenteditable と日本語入力に向き合う
colorful12
0
200
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
GitHub's CSS Performance
jonrohan
1033
470k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
ラッコキーワード サービス紹介資料
rakko
1
5.3M
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Amusing Abliteration
ianozsvald
1
350
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
Building AI with AI
inesmontani
PRO
1
1.3k
The Curse of the Amulet
leimatthew05
3
16k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Claude Code のすすめ
schroneko
67
230k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
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