使用Jinja动态更新Javascript变量?

使用Jinja动态更新Javascript变量?,javascript,python,flask,Javascript,Python,Flask,我创建了一个web表单,需要用户创建模板。调用所有以前的模板条目不是问题,但是在调用时将信息传递给表单似乎很棘手。基本上,我希望用户能够从下拉列表中选择模板(参见下面的屏幕截图和内容),然后根据他们的选择,更新脚本中的变量以自动填充表单数据。现在,它只选择最近的条目。这仅仅是使用python/flask/javascript就可以实现的,还是我遗漏了什么?任何帮助都将不胜感激!谢谢 模板下拉列表 <label for="template_select">Select Temp

我创建了一个web表单,需要用户创建模板。调用所有以前的模板条目不是问题,但是在调用时将信息传递给表单似乎很棘手。基本上,我希望用户能够从下拉列表中选择模板(参见下面的屏幕截图和内容),然后根据他们的选择,更新脚本中的变量以自动填充表单数据。现在,它只选择最近的条目。这仅仅是使用python/flask/javascript就可以实现的,还是我遗漏了什么?任何帮助都将不胜感激!谢谢

模板下拉列表

    <label for="template_select">Select Template</label>
<select class="form-control" name="template_select" id='template_select' onchange='changeTemplate()'>
<option value=''></option>

{% for template_info in template_search %}
<option value='{{template_info.client_name}}'>{{template_info.client_name}}</option>
{% endfor %}

</select>

您的错误是在循环中创建Javascript代码。你不需要这样做

您要做的是将发送到浏览器的数据视为独立数据。先让它在没有烧瓶和金杯的情况下工作。创建一个静态页面,该页面可以工作并执行您想要的操作

以下代码可用于静态数据:

函数更改模板(){
var template=document.getElementById('template_select')。值;
document.getElementById('client_name')。innerHTML=模板;
}
选择模板
客户1
客户2
客户3

没有客户端设置
我不清楚您想要实现什么。为什么脚本在模板中处于循环中?您希望Javascript代码中的
{{{template\u info.client\u name}}
解析为什么?您的下拉菜单是从
template\u search
序列填充的,因此有多个。Flask with Jinja生成一个发送到浏览器的页面。一旦进入浏览器,Jinja就不再参与,发送的只是Jinja生成的文本。Javascript代码在浏览器中运行,无需进一步连接。在浏览器中放置
changemplate()
函数的多个定义意味着浏览器将用下一个定义替换任何定义,因此您只有一个
changemplate()
的定义。您希望使用Javascript从下拉菜单中获取
模板信息.client\u name
值。您已经这样做了(并将其放在
模板
变量中,但随后您完全忽略了该变量。这非常有效。非常感谢您的解释。我是javascript新手,所以我不知道发生了什么。
{% for template_info in template_search %}

<script>
function changeTemplate(){
    var template = document.getElementById('template_select').value;
    document.getElementById('client_name').value='{{template_info.client_name}}';
    document.getElementById('client_name').innerHTML='{{template_info.client_name}}';
}
</script>

{% endfor %}
template_search = newmatter_model.NewClientMatter.query.filter_by(
            creator=verifier, is_template='on').all()