【问题标题】:Loading JavaScript files selectively in Django在 Django 中选择性地加载 JavaScript 文件
【发布时间】:2017-08-27 00:31:27
【问题描述】:

我有 Post 模型,用于 Django 中的博客应用程序。它有一个名为body 的字段。在帖子中,我可能会使用 Latex,所以我需要使用 MathJax.js。在一些帖子中,我添加了代码 sn-p,所以我使用 highlight.js。在一些我使用两者,在一些我不使用它们。

我想根据Post 模型的body 字段加载相关的javascript(类似于THIS)。如何使相关的 .js 文件自动加载?

我知道我可以添加一个指标字段,如hasLatexTrueFalse)或hasCodeTrueFalse)。但是我很懒,我希望Post.body被自动扫描并且只加载相关的js文件。

【问题讨论】:

  • 我只会默认加载它们,它们将被浏览器缓存并且每个用户最多加载一次,之后打开/关闭它们并没有太大收益。如果您仍然想要动态 js 包含 - 您需要添加那些 boolean latex=yes/no 字段,在每个帖子视图上检测乳胶而不是在帖子创建/编辑期间检测乳胶是一种浪费。
  • 我理解浪费资源的逻辑,我同意使用专用布尔变量可以获得的性能提升。但我仍然想知道我是否可以自动完成。

标签: javascript jquery django performance


【解决方案1】:

在您的上下文中设置某些内容或使用模板上下文处理器。例如,如果有 form 键是我的上下文,我会加载处理表单的代码。对于几乎每个页面上我想要的东西,我都会在我的上下文中放置一个 no_something 来禁用它。这是通过在基本模板中的标记周围放置条件来完成的。如果变量不存在或为 false,则不会显示。

我还将静态文件放入上下文中的列表中。 JavaScript 在context['js'] 中,css 在context['css'] 中。这些在我的标题中循环播放。我可以在基类中实现 get_context_data,所有从该基类扩展的视图都将包含 javascript 和 css 文件。

【讨论】:

  • 我看不出添加no_something 与在Post 模型中添加指标字段有何不同。我不知道“模板上下文处理器”,我会检查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2013-05-17
  • 2015-01-07
  • 1970-01-01
  • 2019-06-04
  • 2021-03-25
  • 1970-01-01
相关资源
最近更新 更多