跳转到主要内容

允许在没有导入所有应用的情况下运行Django静态文件命令。

项目描述

Django Staticfiles Noimport

Build Status

django-staticfiles-import存在是为了允许Django的collectstatic管理命令在最小的环境变量下运行,以便在docker build步骤中运行,从而产生的容器是自包含的。

这种方法允许典型的运行时初始化验证所有必需的运行时环境变量是否已定义,并为仅包含collectstaticfindstatic命令的替代入口点。

具体来说,此项目允许Django应用程序具有static/目录,这些目录期望您使用默认启用的AppDirectoriesFinder

需求与约束

使用此软件包需要接受一些在我们环境中可接受的约束

  • 静态资源将在所有环境中使用相同的路径提供服务(即STATIC_URL不会按环境变化。)
  • Django "应用"可能无法在应用初始化期间操纵任何静态文件处理行为。
  • INSTALLED_APPS必须将应用名称作为字符串引用,而不是直接导入AppConfig

设置

  1. 确保您有一个os.environ无关的设置模块。
    • 这可以通过创建一个简单的settings/apps.py模块来实现,该模块由您的主设置导入,使用glob语法,例如:from .apps import *以及一个导入它的settings/static.py
    • 在那个设置链中的某个地方,您必须定义SECRET_KEY,这是必需的非静态文件相关设置。
  2. 在您的STATICFILES_FINDERS设置中使用提供的staticfiles_noimport.finders.AppDirectoriesNoImportFinder。(请参阅包含的示例。)
  3. 直接使用 collectstaticfindstatic 而不是使用典型的 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

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

django-staticfiles-noimport-0.9.tar.gz (3.6 kB 查看哈希值)

上传时间

构建分布

django_staticfiles_noimport-0.9-py3-none-any.whl (5.7 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面