将数据从Jinja2宏返回Python

2024-05-16 19:48:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名javascript初学者,使用Python的folium包在GUI中生成嵌入式地图

我在使用Jinja2 javascript模板和导出数据时遇到问题。在下面的代码中,模板是用函数copy_gps()定义的,当按下HTML按钮时会调用该函数。此功能按预期工作。但是,我无法在需要的位置访问copyText.value(GPS坐标)

以下是按钮的代码:

folium.Marker( location=start_location, popup=f'<input type="text" value="{start_location[0]}, {start_location[1]}" id="myInput" name="test1"><button onclick="copy_gps()">Add to Mission</button>', icon=folium.Icon(color="red", icon="info-sign"), ).add_to(m)

以及来自Jinja2模板的代码:

el = folium.MacroElement().add_to(m) el._template = jinja2.Template(""" {% macro script(this, kwargs) %} function copy_gps() { let copyText = document.getElementById("myInput"); /* document.write(copyText.value); */ alert(copyText.value); return copyText.value; } {% endmacro %} {% set a = "hello" %} {% set b = script() %} """)

按下按钮可以正确调用copy_gps()函数,但我想访问该函数中变量copyText中的数据,该变量位于宏中。我尝试将b设置为宏脚本,但在Python中调用时:

print(el._template.module.b)

。。。它只是逐字打印宏中包含的函数字符串,而不是调用函数并打印返回值

是否有一种方法可以从宏中的函数中获取copyText.value数据,并以类似的方式打印

print(el._template.module.a)

是否正确地将“hello”输出到Python控制台

提前感谢,并为糟糕的格式道歉,因为这是我的第一篇文章


Tags: to数据函数代码模板valuetemplatelocation