【问题标题】:Django - Template tags in javascript and css filesDjango - javascript 和 css 文件中的模板标签
【发布时间】:2011-04-02 19:18:37
【问题描述】:

有什么方法可以将模板标签添加到 javascript 和 css 文件中?我会将它用于任何事情,从传递 url 到媒体 url 链接(图像路径等)到基于用户权限的条件 javascript。

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

【问题讨论】:

    标签: javascript css django django-templates


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您可以提供任何类型的内容,例如模板,而不必是 HTML。但是,您可能无法将其与其他静态内容一起提供,具体取决于您的设置。

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

        【讨论】:

          【解决方案4】:

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


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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-12-23
            • 2018-08-24
            • 2018-05-23
            • 2012-09-27
            • 2014-12-30
            • 2012-10-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多