Allows Django staticfiles commands to be run without importing all apps.
Project description
Django Staticfiles Noimport
django-staticfiles-import exists to allow Django's
collectstatic
management command to run with the
bare minimum of environment variables so it can be
run inside a docker build
step such that the produced
container is self-contained.
This approach allows typical runtime initialization to
verify all required runtime environment variables are
defined and provides an alternative entrypoint for just
the collectstatic
and findstatic
commands.
Specifically, this project allows for Django apps
with static/
directories that expect you to use the
enabled-by-default AppDirectoriesFinder
.
Requirements & Constraints
Utilizing this package requires accepting a handful of constraints that are acceptable in our environment:
- Static assets will be served at the same path in all
environments (i.e.
STATIC_URL
doesn't vary per environment.) - Django "apps" may not manipulate any static file handling behaviors during app initialization.
INSTALLED_APPS
must reference app names as strings, as opposed to importing anAppConfig
directly.
Setup
- Ensure you have an
os.environ
-agnostic settings module.- This may be achieved by creating a simple
settings/apps.py
module that is imported from your primary settings with glob syntax like:from .apps import *
and asettings/static.py
that imports it as well. - Somewhere in that settings chain you must define
SECRET_KEY
which is the one required non-staticfiles related setting.
- This may be achieved by creating a simple
- Use the provided
staticfiles_noimport.finders.AppDirectoriesNoImportFinder
in yourSTATICFILES_FINDERS
settings. (See included example.) - Use
collectstatic
andfindstatic
directly without using the typicalmanage.py
entrypoint. You'll need to inject your static-specific settings (e.g.,DJANGO_SETTINGS_MODULE=settings.static
) for things to work as expected.
Example Usage
# settings/apps.py
INSTALLED_APPS = (
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.admin",
...
...
"yourappone",
"yourapptwo",
)
# settings/static.py
from .apps import *
STATIC_ROOT = "/static/foobar/"
STATIC_URL = "/static/foobar/"
STATICFILES_DIRS = (
"/some/resolved/path/static",
)
STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
"staticfiles_noimport.finders.AppDirectoriesNoImportFinder"
)
STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
Running collectstatic:
$ DJANGO_SETTINGS_MODULE=myproject.settings.static collectstatic
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-staticfiles-noimport-0.9.tar.gz
.
File metadata
- Download URL: django-staticfiles-noimport-0.9.tar.gz
- Upload date:
- Size: 3.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce278c1b553637137303a560b01870879825782df716d3f1d3cb0f7ac11a821b |
|
MD5 | 223680a7ffe2b2cdf19e6c5d1404e23b |
|
BLAKE2b-256 | 6f08c02d0ffe518e83d836ee6f292fb14d078d7e51367f333dd9d6a1e3265e4f |
File details
Details for the file django_staticfiles_noimport-0.9-py3-none-any.whl
.
File metadata
- Download URL: django_staticfiles_noimport-0.9-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2914d6eafcd12a2ff72b112b55645ef6b5e99a34298927331cd6ec327bb37bfa |
|
MD5 | f6889f8d2c71bc095a42a3d0878bed76 |
|
BLAKE2b-256 | 8452c8888fccb4b415cae0b3ac47f286e5164994865eacefbb2d419fbfdc3737 |