django-assets helps you to integrate webassets into your Django application.
First, add django_assets to your INSTALLED_APPS setting:
INSTALLED_APPS = (
...,
'django_assets',
)
Create an assets.py file inside your application directory. This is where you define your assets, and like Django’s admin.py files, they will automatically be picked up:
from django_assets import Bundle, register
js = Bundle('common/jquery.js', 'site/base.js', 'site/widgets.js',
filters='jsmin', output='gen/packed.js')
register('js_all', js)
Note
Make sure your assets.py is inside a Django application, not in the project. That is, the path might be something like my_project/my_application/assets.py.
If you want to define assets in a different place, you can use the ASSETS_URL setting.
Finally, include the bundle you defined in the appropriate place within your templates:
{% load assets %}
{% assets "js_all" %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
django-assets will now automatically merge and compress your bundle’s source files the first time the template is rendered, and will automatically update the compressed file every time a source file changes. If ASSETS_DEBUG is enabled, then each source file will be outputted individually instead.
If you prefer, you can also do without defining your bundles in code, and simply define everything inside your template:
{% load assets %}
{% assets filters="jsmin", output="gen/packed.js", "common/jquery.js", "site/base.js", "site/widgets.js" %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
django-assets also provides a management command, manage.py assets. It can be used to manually cause your bundles to be rebuilt:
$ ./manage.py assets build
Building asset: cache/site.js
Building asset: cache/ie7.js
Building asset: cache/site.css
Note that this is more difficult if you are defining your bundles within your templates, rather than in code. You then need to use the --parse-templates option, so the build command can find the bundles.
django-assets can integrate with Django’s django.contrib.staticfiles.
See Jinja2 support if you want to use django-assets with the Jinja2 templating language.
For further information, have a look at the complete webassets documentation, and in particular, the following topics: