【发布时间】:2020-05-25 12:41:13
【问题描述】:
首先,我想说这是我在这里的第一个问题! (如果这是多余或重复的,请原谅我)
我在从 Django 模板调用 JS 脚本时遇到一些问题:
{% for suggestion in suggestions %}
<img class="catalogue-poster" src="{{ suggestion.poster }}" alt="Portada" onclick="
document.getElementById('{{form.title.auto_id}}').value = '{{suggestion.title}}'
document.getElementById('{{form.year.auto_id}}').value = '{{suggestion.year}}'
document.getElementById('{{form.director.auto_id}}').value = '{{suggestion.director}}'
document.getElementById('{{form.rating.auto_id}}').value = '{{suggestion.rating}}'
document.getElementById('{{form.poster.auto_id}}').value = '{{suggestion.poster}}'
document.getElementById('{{form.trailer.auto_id}}').value = '{{suggestion.trailer}}'
document.getElementById('{{form.synopsis.auto_id}}').value = '{{suggestion.synopsis}}'
document.getElementById('{{form.cast.auto_id}}').value = '{{suggestion.cast}}'
" />
{% endfor %}
那么,首先,我怎样才能在外面声明一个函数。我是一名 C 开发人员,抱歉我的无知。
我试过在外面创建一个脚本,比如
<script>
function foo() {
console.log('Hey');
});
</script>
并以这种方式调用它:
<img class="catalogue-poster" src="{{ suggestion.poster }}" alt="Portada" onclick="foo()"/>
但是这个在纯 HTML 上工作的简单事情,使用 django 模板似乎不起作用......
另一方面,真正的问题是,有没有办法使用 js 变量访问在 render 中传递的 Django 变量?
如:
const jsVariable = 'title';
document.getElementById('{{form.jsVariable.auto_id}}').value = '{{suggestion.jsVariable}}'
我还没有找到任何方法来实现这一点,也许还有另一个好主意!
[已解决]:正如@SahilDesai 所说,模板只会对视图函数通过上下文对象发送的变量做出响应。 Jinja 模板不会知道由 javascript 创建的变量。所以似乎不可能做到这一点。
【问题讨论】:
-
解决方案有帮助吗?或者你想做一些不同的任务?
标签: javascript django django-templates