在 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 中“有条件地”提供静态文件的主要内容,如果未能解决你的问题,请参考以下文章