【发布时间】:2019-07-28 13:09:55
【问题描述】:
当使用 DEBUG=False 将 django 部署到 localhost 或 heroku 时,它会抛出一个错误提示
C:\Users\krish\Envs\PRREMIA\lib\site-packages\whitenoise\base.py:105: UserWarning: No directory at: c:\Users\krish\Documents\python\PRREMIA\staticfiles\
warnings.warn(u'No directory at: {}'.format(root))
[28/Jul/2019 16:05:43] "GET / HTTP/1.1" 500 27
当 DEBUG=True 时,它工作正常。
静态设置
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
开启Github
为什么?我该如何停止和解决这个问题?
注意:
从MIDDLEWARE 中移除whitenose 中间件并更改STATICFILES_STORAGE
# STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
删除了 500 错误,但仍然找不到静态文件。
【问题讨论】:
-
Whitenoise 处理静态文件。所以显示你的静态设置。
-
Heroku 永远不应该显示任何带有
C:\的内容。这是 Windows 风格的路径,Heroku 不运行 Windows。您是否在设置中的任何位置都包含绝对路径? -
@Chris 不,我一直在使用正斜杠。 (老实说,直到几个月前我才知道 Windows 使用了反斜杠)。你也可以看看我的code
-
您应该检查您是否可以在本地运行
python manage.py collectstatic而不会出现任何错误。如果 Heroku 在编译项目时无法成功运行,那么静态文件将无法正常工作。 -
@12944qwerty,它不仅仅是反斜杠。它是
C:本身,以及对似乎指向本地虚拟环境的Windows 路径的引用:C:\Users\krish\Envs\PRREMIA。您的代码中的某些内容正在引用本地路径。
标签: python django heroku http-status-code-500