我刚刚(有史以来第一次)将 Django 项目部署到 Web 服务器。一切(包括 postgres)都可以完美运行,除了无法加载静态图像。
这是settings.py的相关部分:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
#STATICFILES_DIRS = [
# os.path.join(BASE_DIR, "static"),
#]
# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
LOGIN_REDIRECT_URL = 'home'
LOGIN_URL = 'login'
LOGOUT_URL = 'logout'
AUTH_USER_MODEL = 'account.CustomUser'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
我在控制台中收到的错误消息如下:"GET /static/images/logo.png HTTP/1.1" 404 1808
但是,在控制台中检查文件路径时,我有以下内容:root@melius:/django/melius/static/images#
在此文件夹中存在文件。我的错误在哪里?
最佳答案
您的静态文件可能有两个原因无法正常工作。
首先,Django 在生产环境中不提供静态文件。
我还注意到您的静态设置配置错误。
确保您的 setting.py
看起来像这样:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'YOUR STATIC FILE FOLDERS')]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
如果您在 Nginx or
上运行您的应用程序 Apache 2 please make sure you configured the
.conf` 文件正确地提供静态文件。此外,还有一个简单明了的解决方案,即
whitenoise
如果您不想使用 Nginx 或类似服务器提供静态文件。你可以试试
whitenoise
要使用 whitenoise,请先安装它并像这样更新您的 settings.py 文件:STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
并将其添加到 session 中间件之前的中间件中MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', # Serve static in production without nginx or apache
'django.contrib.sessions.middleware.SessionMiddleware',
........
]
希望解决方案能解决您的问题在这里您可以获取白噪声文档:http://whitenoise.evans.io/en/stable/
注意:静态根目录和静态目录不应该相同
关于django - 部署的 Django 项目不加载静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68530828/