首页 >后端开发 >Python教程 >Django 中的 STATICFILES_DIR、STATIC_ROOT 和 MEDIA_ROOT 有什么区别?

Django 中的 STATICFILES_DIR、STATIC_ROOT 和 MEDIA_ROOT 有什么区别?

Patricia Arquette
Patricia Arquette原创
2024-10-25 13:23:30331浏览

What's the Difference Between STATICFILES_DIR, STATIC_ROOT, and MEDIA_ROOT in Django?

Django 中 STATICFILES_DIR、STATIC_ROOT 和 MEDIA_ROOT 的区别

Django 中的静态文件是不会改变的文件,例如图像、 CSS 和 JavaScript。 Django 根据这些文件的目的和用途以不同的方式管理这些文件。

STATICFILES_DIRSTATIC_ROOT 都用于静态文件,但它们有不同的用途。 STATICFILES_DIR 用于指定 Django 在运行collectstatic 命令时将在其中查找静态文件的其他目录。如果您想将静态文件保存在与项目主目录不同的位置(例如专用的静态文件服务器中),这非常有用。

STATIC_ROOT 用于指定 Django 将在何处收集所有静态文件并在部署项目时使它们可用。这通常设置为项目目录之外的位置,例如示例中的 /home/user/project/django1/top/listing/static。

MEDIA_ROOT 用于用户-上传的文件,例如图像或视频。与静态文件不同,上传的文件可以更改,并且通常没有版本控制。 MEDIA_ROOT 指定这些文件在服务器上的存储位置。

在您的情况下,您使用 MEDIA_ROOT 来存储上传的照片,这是正确的。但是,当您尝试在管理员中包含自定义 JS 脚本时,您使用了 STATICFILES_DIRS 而不是 STATIC_ROOT。这就是为什么您在加载 JS 脚本时遇到 404 错误的原因。

要解决此问题,您可以:

  • 使用 STATIC_ROOT 指定位置静态文件并将自定义 JS 脚本添加到该位置。
  • 使用 STATICFILES_DIRS 添加一个附加目录,Django 将在其中查找静态文件并将 JS 脚本添加到该目录。

请记住,STATIC_ROOT仅在部署项目时使用,因此建议在开发期间使用STATICFILES_DIRS,在部署时使用STATIC_ROOT .

以上是Django 中的 STATICFILES_DIR、STATIC_ROOT 和 MEDIA_ROOT 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn