我正在制作一个小的Django应用程序,我想在生产中使用通过Django管理面板上传的文件
这是我的settings.py文件
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
MEDIA_URL = ''
MEDIA_ROOT = BASE_DIR
我信任管理员上传的文件,希望能够轻松地为它们提供服务(没有AmazonS3和类似的服务),所以我尝试将上传的文件与其他静态文件放在一起
image = models.ImageField(upload_to='static/images')
通过管理面板上传图像后,我在DigitalOcean控制台中运行python manage.py collectstatic
。每当我尝试访问图像时,我都会收到错误404,而所有其他静态文件(都是真实的静态文件,未通过管理面板上载)都会成功加载
我在本地做了同样的事情,没有问题,一切都按预期加载(DEBUG=True
在本地和DigitalOcean上都设置了)。是否有某种安全措施不让上传的文件以静态形式结束?如果我信任通过管理面板上传的文件,如何绕过它
如果您使用
manage.py runserver
运行您的网站首先确保媒体正在主
urls.py
中服务然后,您可以使用runserver with unsecure在有或没有
DEBUG=True
的情况下运行您的网站https://docs.djangoproject.com/en/3.2/ref/contrib/staticfiles/#cmdoption-runserver-insecure
在django文档中,这不是为您的文件提供服务的推荐方式,您应该使用像nginx或apache这样的反向代理
或者如果你真的不想使用反向代理,你可以试试whitenoise http://whitenoise.evans.io/en/stable/django.html
相关问题 更多 >
编程相关推荐