如何将查询集从django传递到javascript函数?
我想通过模板将查询集从视图传递到javascript函数: 我的如何将查询集从django传递到javascript函数?,javascript,json,django,Javascript,Json,Django,我想通过模板将查询集从视图传递到javascript函数: 我的视图.py: def myview(request): lista=Mymodel.objects.filter(tipo=mytipo) context_dict['lista']=lista return render(request, 'mytemplate.html', context_dict) def myview(request): lista=Mymodel.obje
视图.py
:
def myview(request):
lista=Mymodel.objects.filter(tipo=mytipo)
context_dict['lista']=lista
return render(request, 'mytemplate.html', context_dict)
def myview(request):
lista=Mymodel.objects.filter(tipo=mytipo)
lista_formatted=[]
for elem in lista:
lista_formatted.append('/media/'+str(elem.myfield))
lista_formatted=json.dumps(lista_formatted)
context_dict['lista']=lista_formatted
return render(request, 'mytemplate.html', context_dict)
我的模板.html
:
<script>
<!--
window.onpageshow = function() {
myfunction('{{lista}}');
};
-->
</script>
<script>
<!--
window.onpageshow = function() {
myfunction({{lista|safe}});
};
-->
</script>
问题是lista
会变成一个字符串。我试过使用JSONECODER,但我不知道如何使用。我希望避免使用JsonResponse,因为我希望在模板中使用该视图(如果可能的话)
编辑:
答案中提出的解决方案存在问题:
TypeError: Python object is not JSON serializable
中提出的解决方案也不起作用(找不到由model\u to_dict
调用的\u meta
属性)
JSON.parse不起作用
SyntaxError: missing ) after argument list
问题似乎在这条路和另一条路之间:
myfunction(JSON.parse('['/mypath/myimage.png', '/otherpath/otherimage.png', 'etc... ']'));
此外,您还必须在模板中添加|safe
幸运的是,我需要一个字符串列表,以便:
我的视图.py
:
def myview(request):
lista=Mymodel.objects.filter(tipo=mytipo)
context_dict['lista']=lista
return render(request, 'mytemplate.html', context_dict)
def myview(request):
lista=Mymodel.objects.filter(tipo=mytipo)
lista_formatted=[]
for elem in lista:
lista_formatted.append('/media/'+str(elem.myfield))
lista_formatted=json.dumps(lista_formatted)
context_dict['lista']=lista_formatted
return render(request, 'mytemplate.html', context_dict)
我的模板.html
:
<script>
<!--
window.onpageshow = function() {
myfunction('{{lista}}');
};
-->
</script>
<script>
<!--
window.onpageshow = function() {
myfunction({{lista|safe}});
};
-->
</script>
更改下面的行
context_dict['lista']=json.dumps(lista) //note json.dumps() wraps it
删除此处的引号:
<script>
<!--
window.onpageshow = function() {
myfunction({{lista}});//<--quote removed!
};
-->
</script>
或者,您可以按照@mkaran的建议进行操作JSON.parse
将字符串放入函数中,myfunction(JSON.parse({{lista}}')代码>获取QuerySet类型的错误对象不是JSONserializable@Manza,您应该将其转换为listlista=list(Model.objects.all().values())