Django中"从staticfiles加载静态"和"django.core.context_processors.static"之间的区别

Ant*_* F. 5 django static-files django-staticfiles

当我了解Django如何处理静态文件时,我已经看到了两种不同的方式来提供静态文件,同时仍然允许移植性.

这被认为是更好的做法?有一种方式比另一种更好吗?例如,这个 SO问题有两种方法作为答案,而这个方法有第二种方法.任何见解都会有所帮助.

knb*_*nbk 5

当使用 Django 的默认StaticFilesStorage. 这两种方法都不知道任何实际文件。这两种方法都只是将STATIC_URL设置和实际文件路径连接在一起。

使用自定义文件存储后端时可能会有所不同。如果您需要灵活性,例如,如果某些文件使用不同的静态 url 存储,您可以覆盖后端的url方法以根据文件的实际位置返回一个 url。使用该STATIC_URL设置是不可能的。但是,这种情况非常罕见:大多数服务器将它们的静态文件存储在同一服务器上或第三方服务上的单个位置。

当您定义STATIC_URL设置并且静态文件与网站位于同一域中时,最好将其定义为相对于根的 url,例如'/static/'. 这增加了可移植性并且不太可能导致错误。如果您已经涵盖了可以部署代码的所有系统,您将不再需要担心。