gpt4 book ai didi

Django 静态与用户上传的文件

转载 作者:行者123 更新时间:2023-12-05 00:58:19 26 4
gpt4 key购买 nike

在阅读了大量文档之后,我仍然没有很好地理解什么是静态文件与用户上传的文件......或者静态文件究竟是什么。

1. 静态文件

Django describes静态文件,例如“图像、javascript、css”。好的,有道理。但是所有那些 .py 文件和 .html 模板文件等......它们不是静态的?当网站运行时,它们不会“改变”。究竟什么是静态文件? “提供静态文件”是什么意思?这与“提供”“views.py”文件或“home.html”文件有什么不同?

最重要的是,为什么我什至需要“collectstatic”呢?为什么我所有的静态文件都需要放在一个地方?我想如果您使用单独的 Web 服务器来“服务”它们,那是有道理的......仍然,不确定这到底意味着什么。

另外,无论如何,“collectstatic”去哪里找到所有假定的静态文件?它是否会遍历我的所有代码并查看我在哪里访问图像/javascript 文件?

2.用户上传文件

假设我只是从表面上看待这个静态的东西,如果用户上传图片会发生什么?我是否需要在后台运行的程序不断运行“collectstatic”?

Django describes媒体文件作为管理用户上传内容的一种方式。老实说,我还没有尝试过(现在会这样做),但这仍然代表了一个问题:如果将所有“静态”文件放在一个地方如此重要,为什么突然不为用户这样做就可以了 -上传的文件?

这个“MEDIA_ROOT”目录中的文件不是由“collectstatic”收集的吗?如果我只是把我所有的图片/javascript/css 放到这个媒体文件夹中呢?然后什么都没有收集?这有什么问题吗?

感谢任何人都可以对此提出的任何见解。

最佳答案

1

静态文件是您的 HTML 模板正确显示所需的一切——CSS、JavaScript、图像、Flash 文件等。它们的处理方式不同,因为 Django 与它们没有什么特别的关系。 (使用您的views.py,它必须在其中运行Python代码,使用模板,它需要呈现您使用过的任何模板标签等 - 使用静态 Assets ,它们只需要“按原样”提供给用户)

collectstatic 命令将查看每个应用程序的“静态”子目录,以及您在 STATICFILES_DIRS 设置中定义的任何其他目录。这意味着您的 Web 服务器(Apache、Nginx 等)只需要提供一个目录即可使您的所有 Assets 对您的用户可用,而不是每个单独的应用程序的“静态”目录。

2

用户上传的文件不会被 collectstatic 命令收集 - 并且可以单独保存。您不想将自己的 CSS/JS/图像等与它们混为一谈。

它们已经进入一个可由您的网络服务器提供服务的目录中,根本不需要定期收集。

关于Django 静态与用户上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32805271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com