如何更新 Wagtail 静态文件,当我使用 STATIC_DIRS 时它们停止工作
How to update Wagtail static files, they stopped working when I used STATIC_DIRS
我正在尝试将 Wagtail 从 2.8 版更新到最新的 2.15 版。另外,我必须从 Django 3.0 更新到 3.2。但是,我注意到当我使用 STATICFILES_DIRS 时,Wagtail admin (2.15) 的样式变得扭曲,好像它使用的是旧版本 (2.8) 中的文件。
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)
...
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
STATICFILES_DIRS = [os.path.join(PROJECT_DIR, 'static'),]
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
相反,当我删除 STATICFILES_DIRS 时,Wagtail admin 上的样式得到修复,但我项目中的所有样式都消失了。
我已经检查过了,这不是缓存。我试了好几次,不同的浏览器等等
尝试更改:
STATICFILES_DIRS = [os.path.join(PROJECT_DIR, 'static'),]
至
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
您的 STATICFILES_FINDERS
设置告诉 Django 它应该在以下位置查找静态文件:
FileSystemFinder
告诉它查看 STATICFILES_DIRS; 中列出的任何位置
AppDirectoriesFinder
告诉它在 INSTALLED_APPS. 中每个已注册应用程序的 static
文件夹中查找
正常情况下,STATICFILES_DIRS应该不会对Wagtail自己的静态文件产生影响。这是因为 Wagtail 的静态文件存储在组成 Wagtail 包的应用程序中,并将由 AppDirectoriesFinder 拉入 - FileSystemFinder(和 STATICFILES_DIRS)不会发挥作用。
我发现您看到的差异表明您之前通过将静态文件放置在项目的 'static' 文件夹中的某个位置来自定义 Wagtail 的 JS / CSS myproject/static/wagtailadmin/css/
,覆盖内置文件。这些定制可能是针对 Wagtail 2.8 进行的,并且不会针对 Wagtail 2.15 正确运行。解决方案是从您的项目中删除这些自定义文件。
我正在尝试将 Wagtail 从 2.8 版更新到最新的 2.15 版。另外,我必须从 Django 3.0 更新到 3.2。但是,我注意到当我使用 STATICFILES_DIRS 时,Wagtail admin (2.15) 的样式变得扭曲,好像它使用的是旧版本 (2.8) 中的文件。
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)
...
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
STATICFILES_DIRS = [os.path.join(PROJECT_DIR, 'static'),]
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
相反,当我删除 STATICFILES_DIRS 时,Wagtail admin 上的样式得到修复,但我项目中的所有样式都消失了。
我已经检查过了,这不是缓存。我试了好几次,不同的浏览器等等
尝试更改:
STATICFILES_DIRS = [os.path.join(PROJECT_DIR, 'static'),]
至
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
您的 STATICFILES_FINDERS
设置告诉 Django 它应该在以下位置查找静态文件:
FileSystemFinder
告诉它查看 STATICFILES_DIRS; 中列出的任何位置
AppDirectoriesFinder
告诉它在 INSTALLED_APPS. 中每个已注册应用程序的
static
文件夹中查找
正常情况下,STATICFILES_DIRS应该不会对Wagtail自己的静态文件产生影响。这是因为 Wagtail 的静态文件存储在组成 Wagtail 包的应用程序中,并将由 AppDirectoriesFinder 拉入 - FileSystemFinder(和 STATICFILES_DIRS)不会发挥作用。
我发现您看到的差异表明您之前通过将静态文件放置在项目的 'static' 文件夹中的某个位置来自定义 Wagtail 的 JS / CSS myproject/static/wagtailadmin/css/
,覆盖内置文件。这些定制可能是针对 Wagtail 2.8 进行的,并且不会针对 Wagtail 2.15 正确运行。解决方案是从您的项目中删除这些自定义文件。