2017-04-01 37 views
0

我有Django中的博客应用程序的Post模型。它有一个名为body的字段。在帖子中,我可能会使用Latex,所以我需要使用MathJax.js。在一些帖子中,我添加了代码片段,因此我使用了highlight.js。在一些我使用两个,在一些我没有使用它们。有选择地在Django中加载JavaScript文件

我想加载相关javascript,具体取决于Post模型的body字段(与THIS类似)。我怎样才能让相关的.js文件自动加载?

我知道我可以添加一个指示符字段等hasLatexTrueFalse)或hasCodeTrueFalse)。但我很懒,我想Post.body被自动扫描,只有相关的js文件加载。

+0

我只是默认加载它们,它们会被浏览器缓存,并且每个用户最多加载一次,在这之后再打开/关闭它们并没有太多的收获。如果你仍然想要动态js包括 - 你需要添加这些布尔latex = yes/no字段,这是在每个帖子视图检测乳胶,而不是在后期创建/编辑过程中浪费。 – serg

+0

我理解浪费资源的逻辑,我同意使用专用的布尔变量获得的性能提升。但我仍然想知道我是否可以自动做到这一点。 – HBat

回答

0

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

我也在做的是把我的静态文件放在我的上下文中的列表中。 JavaScript在context['js']和css中的context['css']。这些都在我的头上循环播放。我可以在基类中实现get_context_data,并且从中扩展的所有视图都具有javascript和css文件。

+0

我看不到添加'no_something'与添加'Post'模型中的指示符字段是不同的。我不知道“模板上下文处理器”,我会检查。 – HBat

相关问题