【问题标题】:Django: How to pass python variable value to javascript file?Django:如何将python变量值传递给javascript文件?
【发布时间】:2020-11-20 07:30:48
【问题描述】:

我在views.py中有一个返回纬度和经度的函数:

return render(request, 'map.html', {'lat_lng':lat_lng})

我可以在 html 文件中以 {{ lat_lng }} 的身份访问它,但是当我尝试在单独的 js 文件中使用 lat_lng 时,我无法访问它。

我尝试了以下所有堆栈答案,但没有一个对我有用:

Django Template Variables and Javascript

Passing django variables to javascript

How to use Django variable in JavaScript file?

Passing Python Data to JavaScript via Django

【问题讨论】:

标签: javascript python django


【解决方案1】:

您可以利用json_script 模板标签。在您的模板中执行此操作

{{ lat_lng|json_script:"lat_lng" }}

然后在您的 javascript 文件中,您可以像访问此变量一样

const lat_lng = JSON.parse(document.getElementById("lat_lng").textContent);

【讨论】:

    【解决方案2】:

    一种简单的方法是在模板 html 文件(导入 javascript 文件的文件)的顶部附加以下 sn-p:

    <script type="text/javascript">
        const LAT_LNG = "{{ lat_lng }}"; // Or pass it through a function
    </script>
    

    【讨论】:

    • 感谢您的快速回复,我不是 JS 专家,但我认为如果我使用单独的文件,我不需要使用脚本标签,但尽管我尝试不使用脚本标签并且它正在打印 lat_lng,并且当我尝试使用脚本标签时,我收到错误Unexpected token '&lt;'
    • @ShinChan 阅读答案时,它说:“在模板的顶部 html 文件
    【解决方案3】:

    当我尝试在单独的 js 文件中使用 lat_lng 时,我无法访问它。

    您不能在静态文件中使用 django 模板变量。静态文件将以绕过 Django 典型请求处理的方式返回。

    相反,在已知 HTML 元素的 data-* 属性上设置变量,然后获取该元素,访问该属性并以这种方式使用该值。

    【讨论】:

      【解决方案4】:

      确保在脚本标签中获取变量是在包含单独的 js 文件之前 例子:

      <script type="text/javascript"> 
         var variable = "{{myV}}";
      </script>
      
      <script type="text/javascript" src="myJsFile.js"></script>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-25
        • 2019-03-01
        • 2018-12-03
        • 2014-07-31
        • 2017-08-17
        • 2019-03-24
        • 2023-02-25
        相关资源
        最近更新 更多