Django:如何将python变量值传递给javascript文件?

Posted

技术标签:

【中文标题】Django:如何将python变量值传递给javascript文件?【英文标题】:Django: How to pass python variable value to javascript file? 【发布时间】: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

【问题讨论】:

我之前回答过一个类似的问题。您可能想检查一下:***.com/a/56844921/9958954 【参考方案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>

【讨论】:

以上是关于Django:如何将python变量值传递给javascript文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量值从一个文件中的一个类传递给另一个文件中的另一个类python tkinter

如何将变量值“传递”给 JSON 动态对象?

将 Django 变量值分配给 AngularJS

如何将javascript变量传递给django模板标签

如何使用批处理文件将绑定变量值传递给 SQLplus

如何将过程中的变量值传递给 Apex 中的 Javascript 函数