Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将查询集从django传递到javascript函数?_Javascript_Json_Django - Fatal编程技术网

如何将查询集从django传递到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

我想通过模板将查询集从视图传递到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.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,您应该将其转换为list
lista=list(Model.objects.all().values())