This little apps helps to manage your staticfiles when you need to minify them for production use. Moreover, it is capable of versioning the assets so that whenever you need to alter the static files, users won’t be given old file from the browser cache.
Installation
Standard Django way:
pip install django-versioned-static
Add to your INSTALLED_APPS:
INSTALLED_APPS = (
..
..,
'versioned_static',
...
)
Configure the assets themselves:
STATICS_ASSETS = {
'css': {
'css/mycoolproject.css': {
'media': ('screen', 'projection', 'tv'),
'files': ('css/jquery-ui-1.8.18.custom.css', 'css/style.css',),
'version': 1
},
'css/print.css': {
'media': ('print',),
'files': ('css/print.css',),
'version': 1
}
},
'js': {
'js/mycoolproject.js': {
'files': ('js/jquery-1.7.1.min.js',
'js/main.js'),
'version': 1
}
}
}
Done!
Usage in templates
Very simple. Use the asset template tag. Give it the static type (css or js) and the base css alias. It will generate all the necessary HTML for you directly:
{% load versioned_static_tags %}
{% asset "css" "css/mycoolproject.css" %}
{% asset "css" "css/print.css" %}
{% asset "js" "js/mycoolproject.js" %}
It takes your settings in the account. In development (when DEBUG = True), you will be given unversioned and unminified static files. When you turn the debug off, you will be given versioned asset links.
Result with DEBUG=True:
<link type="text/css" rel="stylesheet" href="/static/css/jquery-ui-1.8.18.custom.css" media="screen,projection,tv"/> <link type="text/css" rel="stylesheet" href="/static/css/style.css" media="screen,projection,tv"/> <link type="text/css" rel="stylesheet" href="/static/css/print.css" media="print"/> <script type="text/javascript" src="/static/js/jquery-1.7.1.min.js"></script> <script type="text/javascript" src="/static/js/main.js"></script>
Result with DEBUG=False:
<link type="text/css" rel="stylesheet" href="/static/css/mycoolproject.1.css" media="screen,projection,tv"/> <link type="text/css" rel="stylesheet" href="/static/css/print.1.css" media="print"/> <script type="text/javascript" src="/static/js/mycoolproject.1.js"></script>
Minifying the files
This app features simple management command which helps you create the minified files for production. Usage goes like this:
django-admin.py minifystatics [(CSS/JS) ASSET_FILE]
Real example for previous scenario:
django-admin.py minifystatics css css/print.css
If you want to generate all the files in your app settings, simply run the command without any arguments:
django-admin.py minifystatics
The command will look in your STATIC_ROOT by default (so be sure you ran collectstatic before the minify command) and use it as the root path.
Notes
django-versioned-static internally uses YUI library for minifying the CSS/JS assets.
Metadata
Release files for django-versioned-static 1.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| django-versioned-static-1.4.3.tar.gz | 5.4 kB | Without provenance | Details |
Release files / django-versioned-static-1.4.3.tar.gz
| Download URL | django-versioned-static-1.4.3.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f940017939c0b83af340a50fbc7fe1aebc1836f3746bc35d8efcbfeb150e3958
|
|
BLAKE2b-256 checksum How to use checksums |
a3afc7c35e2fe02bcea7c4aad237c232ec8e2365eac08919f36be2569664da2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for django-versioned-static 1.4.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.