在HEROKU上上传网站后,静态(CSS和JS)文件不起作用

时间:2020-10-14 14:23:12

标签: python django heroku django-views django-templates

我刚刚在heroku上上传了我的网站,css和javascript文件在localhost上可以完美运行,但在部署后无法正常工作。我还确保运行在生产和开发环境中都执行过的命令python manage.py collectstatic,但仍不能解决问题。我已经包括了有用的必要代码,还包括了两个实例的图像以及我的项目目录

Settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

urls.py

from django.conf.urls.static import static
from django.conf import settings

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

这是本地主机上的映像

这是heroku enter image description here

上的图片

这是项目目录结构

enter image description here

2 个答案:

答案 0 :(得分:1)

> Just replace your code with these lines

>urls.py

urlpatterns += static(settings.STATIC_URL,document_root=settings.STATICFILES_DIRS[0])

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

> settings.py
BASE_DIR = Path(__file__).resolve().parent.parent

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]


MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

确保使用heroku cli运行命令: heroku运行python manage.py collectstatic

答案 1 :(得分:1)

Django在生产环境中不提供静态文件,默认情况下,Heroku不支持此文件,除非您将白噪声添加到项目中,否则请遵循以下步骤,希望对您有所帮助

您可以遵循Heroku的官方documentation来在生产中提供静态文件。