允许在没有导入所有应用的情况下运行Django静态文件命令。
项目描述
Django Staticfiles Noimport
django-staticfiles-import存在是为了允许Django的collectstatic
管理命令在最小的环境变量下运行,以便在docker build
步骤中运行,从而产生的容器是自包含的。
这种方法允许典型的运行时初始化验证所有必需的运行时环境变量是否已定义,并为仅包含collectstatic
和findstatic
命令的替代入口点。
具体来说,此项目允许Django应用程序具有static/
目录,这些目录期望您使用默认启用的AppDirectoriesFinder
。
需求与约束
使用此软件包需要接受一些在我们环境中可接受的约束
- 静态资源将在所有环境中使用相同的路径提供服务(即
STATIC_URL
不会按环境变化。) - Django "应用"可能无法在应用初始化期间操纵任何静态文件处理行为。
INSTALLED_APPS
必须将应用名称作为字符串引用,而不是直接导入AppConfig
。
设置
- 确保您有一个
os.environ
无关的设置模块。- 这可以通过创建一个简单的
settings/apps.py
模块来实现,该模块由您的主设置导入,使用glob语法,例如:from .apps import *
以及一个导入它的settings/static.py
。 - 在那个设置链中的某个地方,您必须定义
SECRET_KEY
,这是必需的非静态文件相关设置。
- 这可以通过创建一个简单的
- 在您的
STATICFILES_FINDERS
设置中使用提供的staticfiles_noimport.finders.AppDirectoriesNoImportFinder
。(请参阅包含的示例。) - 直接使用
collectstatic
和findstatic
而不是使用典型的manage.py
入口。为了使事物按预期工作,您需要注入静态特定的设置(例如,DJANGO_SETTINGS_MODULE=settings.static
)。
示例用法
# 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"
运行 collectstatic
$ DJANGO_SETTINGS_MODULE=myproject.settings.static collectstatic
项目详情
关闭
哈希值 for django_staticfiles_noimport-0.9-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2914d6eafcd12a2ff72b112b55645ef6b5e99a34298927331cd6ec327bb37bfa |
|
MD5 | f6889f8d2c71bc095a42a3d0878bed76 |
|
BLAKE2b-256 | 8452c8888fccb4b415cae0b3ac47f286e5164994865eacefbb2d419fbfdc3737 |