在 Django 中“有条件地”提供静态文件

Posted

技术标签:

【中文标题】在 Django 中“有条件地”提供静态文件【英文标题】:Serving static files 'conditionally' in in Django 【发布时间】:2014-08-14 23:38:02 【问题描述】:

我在 Django 中完成了许多项目,并且习惯了提供静态文件的常规方式。但是,这次我有一个不同的场景,模板文件夹中有子文件夹(例如,模板文件夹中有文件夹 page1/、page2/ 等)。这些文件夹中的每一个都包含模板文件“index.html”,然后是静态文件(css、js 和图像文件夹)。

我的问题是,我怎样才能为每个模板提供相应的静态文件。

任何帮助将不胜感激。

【问题讨论】:

但是你为什么要把静态文件和模板放在一起呢?这些是完全不同的东西,服务方式也完全不同。 该应用程序的模板以某种方式与应用程序分离......甚至在单独的存储库中维护......所有保持不变的是传递给模板的数据。我也讨厌有这样一个组织......相信我! 【参考方案1】:

您应该能够像任何其他模板一样包含静态文件。尽管这不是使用静态资产的理想方法,而且对于 django 来说是非常不正统的。

一种方法是在主体的头部和底部设置一个块,分别在您的基本 html 文件中用于额外的 css 和额外的 js。从那里,您可以调用 index.html 中的块并包含您的静态文件。

例如在page1/index.html中

% block extra_css %
<style>
  % include 'page1/mycss.css' %
</style>
% endblock extra_css %

再说一次,我永远不会亲自这样做。使用静态文件并引用它们是可行的方法。

【讨论】:

以上是关于在 Django 中“有条件地”提供静态文件的主要内容,如果未能解决你的问题,请参考以下文章

django中怎么载入css等静态文件

在 Elasticbeanstalk Docker 环境中提供 Django 静态文件

Django 1.7 - 提供静态文件

没有在 Django 上提供静态文件

提供静态文件 django 1.9 生产错误

Django 在使用开发服务器时不会提供静态文件