【问题标题】:Passing variables from views.py into script.js将变量从 views.py 传递到 script.js
【发布时间】:2013-05-08 09:54:01
【问题描述】:

我想知道是否可以将views.py中的render_to_response中的变量传递给script.js,

render_to_response('appname/basic.html',{'var':somevariable})

我基本上想在 HTML 页面之外访问变量 {{var}},因为我的 script.js 使用类似:

function WillHappen()
{
    var n = noty({
        text: 'You're {{var}}!',
        type: 'warning',
        dismissQueue: false,
        layout: 'center',
        theme: 'defaultTheme'
    })

}

如果我将 Javascript 放入 HTML 页面,它会起作用,但我想将它们分开,因为我可能会在我的很多 HTML 页面中使用它。

【问题讨论】:

  • 在这种情况下,你建议我怎么做?我只想在一个单独的 Javascript 文件中显示 {{var}} 包含的内容,该文件通常是某种整数。
  • 在您的模板中:<input id="myhiddenvar" type="hidden">{{ var }}</input>。然后在你的 javascript var text = document.getElementById("myhiddenvar");
  • 看看HTML5 data tag,如果您不想最终得到很多 id 和类(mixin 样式挂钩和数据标识符),这很好
  • @Hedde 是的,很棒的提示! :) 我通常假设没有多少人使用 HTML5 的东西,并避免在答案中使用它。
  • 您可以在模板中定义一个全局 js 变量并将其访问到您的脚本文件中。 <script> var myVar = '{{ var }}'; </script> 和你的 script.js text: "You're "+myVar+" !"

标签: javascript django django-views render-to-response


【解决方案1】:

没有好的解决方案是在 html 文件中的 <script></script> 之间编写代码

也许在my_script.html

<script>
    function WillHappen()
    {
        var n = noty({
            text: 'You're {{var}}!',
            type: 'warning',
            dismissQueue: false,
            layout: 'center',
            theme: 'defaultTheme'
        })

    }
</script>

但是,这样好吗?

【讨论】:

    【解决方案2】:

    好吧,您可以将所有变量都放在一个脚本标签中,并通过其他 javascript 文件访问它们,例如:

    <script>
    var test = {{var}} || false;
    </script>
    

    在其他 js 文件中:

    if (window.test) {
    //
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 2011-11-14
      相关资源
      最近更新 更多