在部署到 Heroku 的 Django 1.11 应用程序上。Django 管理命令findstatic
说它找不到文件angular.min.js
,即使该文件似乎位于 findstatic 正在检查的文件夹中。
$ heroku run python manage.py findstatic --verbosity 2 angular.min.js
Running python manage.py findstatic --verbosity 2 angular.min.js
No matching file found for 'angular.min.js'.
Looking in the following locations:
/app/static
/app/.heroku/python/lib/python3.6/site-packages/django/contrib/admin/static
/app/.heroku/python/lib/python3.6/site-packages/django_extensions/static
/app/.heroku/src/django-floppyforms/floppyforms/static
/app/.heroku/python/lib/python3.6/site-packages/rest_framework/static
$ heroku run ls /app/static/angular/
Running ls /app/static/angular/
angular.min.js controllers.js
所以它似乎angular.min.js
位于/app/static/angular/。为什么findstatic
找不到呢?
settings.py 的相关部分:
我按照Heroku 的说明使用 Django 服务静态文件:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATIC_URL = "/static/"
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# ...others here too
]
此外,whitenoise
在 requirements.txt
没有解决我的问题的相关问题:
Django findstatic:找不到匹配的文件(在我看来,STATICFILES_DIRS设置正确)
django findstatic 没有在每个目录中查找(在我的情况下,findstatic 似乎在正确的父目录中查找)