为什么使用Django的collectstatic而不是直接从静态目录提供文件?

时间:2014-01-10 12:10:39

标签: django

来自Django Docs:

  

部署django.contrib.staticfiles提供了便利   用于在单个目录中收集静态文件的管理命令   你可以轻松地为他们服务。

     

将STATIC_ROOT设置设置为您想要的目录   提供这些文件,例如:

STATIC_ROOT = "/var/www/example.com/static/" 
     

运行collectstatic管理命令:

$ python manage.py collectstatic
     

这将复制您的所有文件   静态文件夹进入STATIC_ROOT目录。

     

使用您选择的网络服务器来提供文件。部署静态   文件涵盖了静态文件的一些常见部署策略。

复制文件的目的是什么,为什么不从他们所在的目录中为他们提供服务?

2 个答案:

答案 0 :(得分:24)

为什么不直接提供您的static目录?您可能会使用多个应用,并且您的某些应用可能不在您的控制之下。在staticfiles应用程序存在之前,您必须手动将所有应用程序的静态文件复制到公共目录,将它们上载到您的CDN,或将它们符号链接到Web服务器的文档根目录。

staticfiles应用程序建立了一个约定:将每个应用程序的静态文件放在static目录下,让Django为您完成工作。

答案 1 :(得分:11)

STATIC_ROOT可以在与应用程序不同的计算机上,因此将静态文件复制到静态根目录意味着您可以从不同的服务器(CDN FTW!)提供静态文件如果这些文件只位于各自的应用程序目录中,则能够执行此操作。

相关问题