我刚刚在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)
上的图片
这是项目目录结构
答案 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来在生产中提供静态文件。