Django - javascript和css文件中的模板标签

时间:2010-08-23 18:23:57

标签: javascript css django django-templates

有没有办法将模板标签添加到javascript和css文件中?我会将它用于从网址传递到媒体网址链接(图像路径等)到基于用户权限的条件javascript。

我只是想到也许我可以提供它,好像它是一个模板,但将url作为我的javascript文件。这是做这种事情的唯一方法吗?如果是这样,它可能不适用于我的媒体生成器,所以我可能想要一个更好的解决方案,如果那里有一个。

4 个答案:

答案 0 :(得分:1)

如何在脚本样式标记之间的 的Django HTML模板中定义JavaScript变量和CSS属性?我知道这听起来像是一个黑客,但在我看来它是一个整洁的,因为这将允许你从一个位置控制你的动态变量。

答案 1 :(得分:0)

你的想法是正确的方法。如果您想利用Django的模板工具,那么最简单的方法是将JS文件作为模板提供。有关像您这样的情况,请参阅this question

答案 2 :(得分:0)

您可以提供任何类型的内容,例如模板,它不必是HTML。但是,您可能无法使用其余静态内容提供此服务,具体取决于您的设置。

如果您只想替换媒体网址等内容,可以选择将这些模板“编译”为可以提供的静态文件。但是,这对于基于当前用户权限的任何条件都不起作用。每次部署或更改媒体URL等时,您都需要编写一个脚本来调用django.template.loader.render_to_string并将结果写入文件。

答案 3 :(得分:0)

对于JS文件中的动态内容,你必须制作一个模板,就像其他人说的那样。


但您可以使用django-sekizai轻松地将JS和CSS文件附加到特定页面模板。 (我将它用作django-cms的一部分,但它也可以单独使用。)

它允许您在普通页面模板中定义模块在块中所需的静态资源。 CSS有一个块,JS有一个块。然后可以在base.html中打印这些块。它还处理重复项,因此您不必担心多次添加相同的文件。请参阅usage document

使用这个系统,你不会发送任何受限制的JS或CSS,因为django只会运行授权模板,而且内容永远不会被添加到JS和CSS块中。