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 '<'
@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文件?的主要内容,如果未能解决你的问题,请参考以下文章