3 回答
TA贡献1783条经验 获得超4个赞
我试过一个例子。其中 是从 python 脚本发送变量并在 JavaScript 中访问其值
1) 在 views.py
from django.shortcuts import render
def home_view(request):
var_name = 'hello'
return render(request, 'home.html', {'var_name':var_name})
2) 在 html 文件中(首页.html)
<html>
<h1>Home Page</h1>
<input type="button" value="Submit" onclick="fun()">
<script>
function fun(){
console.log('hello world '+ '{{var_name}}' );
}
var temp = '{{var_name}}';
console.log(temp + 20);
</script>
</html>
如果我点击提交按钮( 你好世界你好 ) 打印在控制台。
我存储了var_name的温度值,可以进一步使用。
TA贡献1155条经验 获得超0个赞
从您的示例中,看起来您希望以编程方式访问Javascript中的Django模型的属性。
主要结论是,您首先需要在Javascript中公开要访问的数据结构(即模型)。
下面是您可以尝试的简单、经过编辑的概念验证。
import json
def my_view(request):
obj = MyModel.objects.get(1)
obj_dict = {
"foo": obj.foo,
"bar": obj.bar,
}
return render(request, 'my_view.html', context={'obj_json': json.dumps(obj_dict)} )
<script>
var obj = {{obj_json}};
var field = 'foo';
console.log(obj[field]);
查看转换 Django 模型对象到字典,所有字段都完好无损,了解将 Django 模型序列化为字典的选项。
TA贡献2003条经验 获得超2个赞
好吧,最后我找到了两个暴露的问题的解决方案。
首先,我声明的脚本函数不起作用,因为它似乎有一个属性叫做autocomplete(参见autocomplete HTML属性),所以,你不能用这个名字声明一个JavaScript函数,我的失败。
Uncaught TypeError: autocomplete is not a function
最后,我发现的简单解决方案是将一组字典传递给模板:
return render(request, 'example.html', {'form': form, 'suggestions': suggestions })
然后在模板中:
{% for suggestion in suggestions %}
<img src="{{ suggestion.poster }}" onclick="autocompleteMovie({{suggestion}});" />
{% endfor %}
<script>
function autocompleteMovie(suggestion){
for (let field in suggestion)
document.getElementById('id_' + field).value = suggestion[field]
}
</script
将其与问题进行比较,确实简化了问题。
添加回答
举报