django-staticfiles is a Django application that provides helpers for serving static files.
The main website for django-staticfiles is bitbucket.org/jezdez/django-staticfiles where you can also file tickets.
You can also install the in-development version of django-staticfiles with pip install django-staticfiles==dev or easy_install django-staticfiles==dev.
Management Commands
build_static
Collects the media files from all installed apps and copies them to the STATICFILES_STORAGE.
You can limit the apps parsed by providing a list of app names:
python manage.py build_static --exclude-dirs admin polls
Duplicate file names are resolved in a similar way to how template resolution works. Files are initially searched for in STATICFILES_DIRS locations, followed by apps in the order specified by the INSTALLED_APPS setting.
Some commonly used options are:
--noinput
Do NOT prompt the user for input of any kind.
-i PATTERN or --ignore=PATTERN
Ignore files or directories matching this glob-style pattern. Use multiple times to ignore more.
-n or --dry-run
Do everything except modify the filesystem.
-l or --link
Create a symbolic link to each file instead of copying.
--exclude-dirs
Exclude additional static locations specified in the STATICFILES_DIRS setting.
For a full list of options, refer to the build_static management command help by running:
python manage.py build_static --help
resolve_static
Resolves one or more expected relative URL path to absolute paths of each media file on the filesystem. For example:
python manage.py resolve_static css/base.css admin/js/core.css
/home/special.polls.com/core/media/css/base.css
/home/polls.com/core/media/css/base.css
/home/polls.com/src/django/contrib/admin/media/js/core.js
By default, all matching locations are found. To only return the first match for each relative path, use the --first option:
python manage.py resolve_static css/base.css --first
/home/special.polls.com/core/media/css/base.css
static_url context processor
To refer to static file assets from a template, ensure you have set the STATIC_URL setting to the URL path where the static files are served.
Next, add the static_url context processor to your TEMPLATE_CONTEXT_PROCESSORS setting:
TEMPLATE_CONTEXT_PROCESSORS = (
'staticfiles.context_processors.static_url',
)
Templates rendered with RequestContext will now have access to a STATIC_URL context variable:
Serving static files during development
Note
Don't use this on production servers. This feature is only intended for development. Please, don't shoot yourself in the foot. Thanks.
To serve static media for both MEDIA_URL and STATIC_URL add the following snippet to the end of your primary URL configuration:
from django.conf import settings
if settings.DEBUG:
urlpatterns += patterns('',
(r'', include('staticfiles.urls')),
)
Settings
STATIC_ROOT
Default: '' (Empty string)
The absolute path to the directory that holds static files like app media:
STATIC_ROOT = "/home/polls.com/polls/site_media/static/"
This is only used by the default static files storage (i.e. if you use a different STATICFILES_STORAGE, you don't need to set this).
STATIC_URL
Default: '' (Empty string)
URL that handles the files served from STATIC_ROOT, e.g.:
STATIC_URL = '/site_media/static/'
Note that this should always have a trailing slash.
STATICFILES_DIRS
Default: []
This setting defines the additional locations the staticfiles app will traverse when looking for media files, e.g. if you use the build_static or resolve_static management command or use the static file serving view.
It should be defined as a sequence of (prefix, path) tuples, e.g.:
STATICFILES_DIRS = (
('', '/home/special.polls.com/polls/media'),
('', '/home/polls.com/polls/media'),
('common', '/opt/webfiles/common'),
)
STATICFILES_PREPEND_LABEL_APPS
Default: ('django.contrib.admin',)
A sequence of app paths that should be prefixed with the label name. For example, django.contrib.admin media files should be served from admin/[js,css,images] rather than the media files getting served directly from the static root.
STATICFILES_MEDIA_DIRNAMES
Default: ('media',)
A sequence of directory names to be used when searching for media files in installed apps, e.g. if an app has its media files in /static use:
STATICFILES_MEDIA_DIRNAMES = (
'media',
'static',
)
STATICFILES_EXCLUDED_APPS
Default: []
A sequence of app paths that should be ignored when searching for media files:
STATICFILES_EXCLUDED_APPS = (
'annoying.app',
'old.company.app',
)
STATICFILES_STORAGE
Default: 'staticfiles.storage.StaticFileStorage'
The storage to use for copying static files to a single location.
Product's homepage
Requirements:
· Django
· Python
What's New in This Release: [ read full changelog ]
· Added resolver API which abstract the way staticfiles finds files.
· Added staticfiles.urls.staticfiles_urlpatterns to avoid the catch-all URLpattern which can make top-level urls.py slightly more confusing. From Brian Rosner.
· Minor documentation changes
· Updated testrunner to work with Django 1.1.X and 1.2.X.
· Removed custom code to load storage backend.