问题描述
我正在尝试为我发布的问题的名称找到答案,但我似乎找不到答案。
我一直在看Django中的一些教程,它们一直告诉我,在Django的生产级别上,您不应使用MEDIA_URL和MEDIA_ROOT类型的约定。
那为什么呢?有具体原因吗?
解决方法
这些变量没有什么特别的。事实是由于性能和安全性问题,您永远不想在生产环境中使用Django的dev服务器提供静态文件。
开发服务器非常有用,因为它允许您在开发过程中仅使用Django来提供静态文件和媒体文件,但无论如何它都不是生产Web服务器(例如Nginx)。
文档一如既往地很有帮助:https://docs.djangoproject.com/en/3.1/howto/static-files/#serving-uploaded-files-in-development
适用于静态文件的内容也适用于媒体文件。有关静态文件部署的策略,请there's a whole page on the docs too。
某些软件包(例如Whitenoise)在处理生产中的静态文件时会有所帮助,但是Whitenoise不能用于媒体(用户上传的)静态文件(因为它大概会在启动时发现静态文件)。