在阅读了大量文档之后,我仍然不清楚什么是静态文件还是用户上传的文件……或者甚至是什么静态文件。
1.静态文件
Django describes静态文件,例如“images,javascript,css”。好的,有道理。但是所有那些.py文件和.html模板文件等...它们不是静态的吗?他们不会在站点运行时“更改”。静态文件到底是什么? “服务静态文件”是什么意思?与“提供”“views.py”文件或“home.html”文件有何不同?
最重要的是,为什么我仍然需要“集合静态”?为什么我所有的静态文件都需要放在一个地方?我想如果您正在使用单独的Web服务器来“服务”它们,那是有道理的...仍然不确定这到底意味着什么。
另外,“collectstatic”在何处可以找到所有假定的静态文件?它会遍历我所有的代码,并查看我在哪里访问图像/javascript文件吗?
2.用户上传的文件
假设我只是将这种静态事物看成是物有所值,如果用户上传图片会怎样?我是否需要在后台运行且不断运行“collectstatic”的程序?
Django describes媒体文件是一种管理用户上传内容的方式。老实说,我还没有尝试过(现在会尝试),但这仍然代表着一个问题:如果将所有“静态”文件都放在一个位置如此重要,为什么突然对用户不这样做就可以了?上传的文件?
“MEDIA_ROOT”目录中的文件不是由“collectstatic”收集的吗?如果我将所有图像/javascript/css放入此媒体文件夹怎么办?那什么也没收?那有什么问题吗?
感谢您提供的任何见解。
最佳答案
1
静态文件是HTML模板才能正确显示所需的所有内容-CSS,JavaScript,图像,Flash文件等。它们的处理方式有所不同,因为Django与它们无关。 (对于您的views.py,它必须在其中运行带有模板的Python代码,它需要呈现您使用过的所有模板标签等-对于静态 Assets ,只需将它们“按原样”提供给用户)
collectstatic命令将在每个应用程序的“static”子目录中以及您在STATICFILES_DIRS设置中定义的所有其他目录中查找。这意味着您的Web服务器(Apache,Nginx等)只需提供一个目录即可使您的所有 Assets 对用户可用,而不是每个应用程序的“静态”目录。
2
用户上传的文件不会由collectstatic命令收集-可以单独保存。您不想将自己的CSS/JS/图像等与它们混合在一起。
它们已经放在您的网络服务器可以服务的单个目录中,根本不需要常规收集。
关于Django静态与用户上传的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32805271/