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
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
500
Python
yumike
3
990
VCS
yumike
1
310
Other Decks in Programming
See All in Programming
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
140
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
120
App Intentsのビルドプロセスを支える技術
kntkymt
0
310
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
Heart of Swift Concurrency
koher
0
340
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
220
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
180
Foundry Localでエージェント開発
seosoft
0
180
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
200
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
240
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
140
AIとGame Jamで、ゲームを完成させた話
takahirosaeki
0
120
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
510
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
450
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
Design in an AI World
tapps
1
310
HDC tutorial
michielstock
2
860
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
830
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