django返回404上传媒体文件

时间:2020-06-24 02:55:15

标签: django

嗨,我将文件上传到部署的服务器时遇到问题。返回404无关紧要,无论是通过管理员还是通过视图执行,但是是否可以看到服务器上已经存在的文件。

我将我的应用托管在共享服务器上的namecheap中,并且设置为

settings.py

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

# Media folder for database media
MEDIA_URL = '/static-server/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, '/static-server/media')

url.py

]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT, show_indexes=True)

在本地调试模式为true或false之间切换,它可以完美运行,但在我部署时不起作用……如果有人有任何想法。好吧,在namecheap支持下,他们回答说错误不在他们身边

1 个答案:

答案 0 :(得分:0)

Django不在生产环境中提供媒体或静态文件,因为这仅意味着为其保存链接。您需要使用其他服务作为Amazon Web Services S3存储桶来提供服务。但是,如果您仍然想使用它,则可以使用Whitenoise。 首先pip install whitenoise,然后pip freeze > requirements.txt 然后在settings.py

MIDDLEWARE = [
  # 'django.middleware.security.SecurityMiddleware',
  'whitenoise.middleware.WhiteNoiseMiddleware',
  # ...
] 

然后添加此行

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

然后将这段代码推送到生产服务器,并确保您运行collectstatic命令,即python manage.py collectstatic现在的静态文件应该可以正常工作。