【发布时间】:2020-02-10 14:17:22
【问题描述】:
更新: 看起来这是由 django-heroku 包引起的,特别是继承的 whitenoise 包,在文档中说你应该放
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
在设置文件的末尾,我从来没有这样做过,但它仍然强制 root 是 'staticfiles' 文件夹而不是 assets 文件夹
原帖:
当我运行 python manage.py collectstatic 时,它会保存到一个名为 staticfiles 的文件夹中
我一定做了一些事情来实现这一点,但我搜索了静态文件,发现除了 'django.contrib.staticfiles' 之外没有引用它。
这是我的 settings.py:
INSTALLED_APPS = [
#some apps
'django.contrib.staticfiles',
#some more apps
'tz_detect',
]
# some more code
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
VENV_PATH = os.path.dirname(BASE_DIR)
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(VENV_PATH, 'media_root')
预期的结果是当 python manage.py collectstatic 运行时,会创建一个资产文件夹,但这从未发生过。
除了静态文件夹中的文件之外,staticfiles 文件夹还包含一个 tz_detect 文件夹(来自 3rd 方包中的静态资产)、一个管理文件夹和一个 staticfiles.json
settings.py 的中间件部分
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# some more middleware
'tz_detect.middleware.TimezoneMiddleware',
]
【问题讨论】:
-
你能提供
tz_detect包的链接吗? -
当然,但我认为白噪声包是问题whitenoise.evans.io/en/stable/django.html。这是 tz_detect 包github.com/adamcharnock/django-tz-detect
-
谢谢,我正在调查这个问题。您可以添加显示您的
MIDDLEWARE的更新吗? -
更新显示中间件更改的问题
-
我运行了
grep -nr 'staticfiles' path/to/tz-detect和其他一些组合,但一无所获,因此tz-detect与问题无关。话虽如此,我认为whitenoise可能会导致问题,但我似乎无法重现您的问题,所以我认为您的问题中没有包含一些重要的内容。INSTALLED_APPS和MIDDLEWARE中是否包含所有第三方应用程序/中间件(不包括默认包)?
标签: django django-staticfiles django-settings django-static