我目前正在使用django模板,其中我希望在if条件下使用javascript变量。我的代码如下
{% extends 'base.html' %}
{% block content %}
<br>
<div class="buttonRow">
{% for t in tickerList %}
<button class="btn btn-dark" onclick="changeChart(this.value)" value="{{ t }}">{{ t }}</button>
{% endfor %}
</div>
<br><br>
{% if {{ currentTicker }} %}
{{ currentTicker |safe }}
{% else %}
<p>NO Graph</p>
{% endif %}
{% endblock %}
<style>
.buttonRow {
width: 100%;
float: left;
border: solid 1px blue;
text-align: center;
}
button {
background: black;
color: white;
}
</style>
<script>
var currentTicker = {{ tickerList.0 }}
function changeChart(ticker) {
currentTicker = ticker;
}
</script>
在这里,我从服务器端发送的字典可能如下所示
{
"tickerList" : ["GOOGL","TSLA"],
"GOOGL" : (plotly object),
"TSLA" : (plotly object)
}
根据用户单击的按钮,我希望更改屏幕上的图形(巧妙地更改对象)。如您所见,我已经制作了必要的按钮,并更改了currentTicker
变量,但我不确定如何在用户单击该按钮时实时更改屏幕上的图形。有人能帮忙吗?
发布于 2022-04-01 02:18:35
Django和JavaScript在不同的运行时进行评估:当请求到达时,对Django模板进行服务器端评估,而在浏览器接收到JavaScript代码后,则对其进行评估。因此,Django模板引擎无法读取JavaScript变量。
根据我的理解,您希望更新HTML DOM中当前选定的滴答键上的信息。要做到这一点,有两个可能的解决方案:
{% t在tickerList %} {t}{t} {%结束于%}
在那里读到:
request.GET.get("currentTicker")
{%如果{{ currentTicker }} %} { currentTicker {安全} {% endif %}无图{% endif %}
致
使用第一种方法,您可以只在Python上完成您的业务,并在每次代码选择更改后重新呈现页面。这对于任何计算密集型的计算都是有用的。
第二种方法为用户提供即时反馈,而对于较大的计算,则会增加客户端的负载。
最后,对于用例,您的决定可能取决于您个人的喜好,您更熟悉哪种语言。
https://stackoverflow.com/questions/71705033
复制相似问题