在 heroku 中托管时的 django 静态文件

django static files when hosting in heroku

我的静态文件夹中有 excel 个文件,我从中读取这些文件以获取一些数据,但是当我部署我的项目时这些文件不在那里

这些是我配置静态文件的设置

STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_DIRS = [
    BASE_DIR / 'static'
]


STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

我是这样称呼他们的

from django.conf import settings
from django.templatetags.static import static
from django.contrib.staticfiles.storage import staticfiles_storage
from django.contrib.staticfiles.finders import find

def get_static(path):
    if settings.DEBUG:
        return find(path)
    else:
        return static(path)

def sport_news(request):
    path = 'excel\sport_update.xlsx'
    excel_data = excel(get_static(path))
    return render(request, 'news/news.html', {"excel_data":excel_data, 'type':'Sport News'})

请检查你settings.py 但首先

pip install whitenoise

在中间件中

'whitenoise.middleware.WhiteNoiseMiddleware',

在底部

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

那么你的主要项目urls.py

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

并且请确保您的 settings.py

中确实有一个静态 cdn 文件夹

然后 运行 python manage.py collectstatic

如果您完成了上述所有操作但仍然没有文件,请确保该文件位于静态 cdn 文件夹中,如果没有,请在完成所有步骤后再次推送代码,您就可以开始了

如果还是不行告诉我