Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
jQuery:如何读取Django视图返回的自定义对象?_Jquery_Django - Fatal编程技术网

jQuery:如何读取Django视图返回的自定义对象?

jQuery:如何读取Django视图返回的自定义对象?,jquery,django,Jquery,Django,这是我的django视图 @csrf_exempt @login_required def get_playlists_for_user(request): """ gets all playlists for user """ logging.info('getting playlist for user - ' + str(request.user)) playlists = UserPlaylist.objects.get_all_playlists

这是我的
django视图

@csrf_exempt
@login_required
def get_playlists_for_user(request):
    """
    gets all playlists for user
    """
    logging.info('getting playlist for user - ' + str(request.user))
    playlists = UserPlaylist.objects.get_all_playlists_for_user(request.user)
    logging.info('user=%s, playlists=%s'%(request.user, playlists))
    return HttpResponse(playlists)
下面是
jQuery
如何通过
ajax

$.ajax({
        url: '/getUserPlaylists',
        success: function(response, textStatus, jqXHR){

            console.log(response);
        },
        error: function(response, textStatus, jqXHR) {

        }
});
该视图返回播放列表对象的列表

playlists=[<Playlist id:1, name:first, date_created:2012-08-05 06:28:31.954623+00:00, deleted:False>, <Playlist id:2, name:my, date_created:2012-08-06 12:47:13.023537+00:00, deleted:False>, <Playlist id:3, name:new, date_created:2012-08-06 12:48:45.708277+00:00, deleted:False>, <Playlist id:5, name:second, date_created:2012-08-06 21:19:33.050187+00:00, deleted:False>]
当我在firebug中登录它们时,我将它们视为

Playlist objectPlaylist objectPlaylist objectPlaylist object

如何在jQuery中读取这些对象?

您需要以javascript可以理解的形式返回Python对象,通常是(javascript对象表示法)。因此,在您的视图中,使用django的:

在您的ajax中:

$.ajax({
       url: '/getUserPlaylists',
       dataType: "json",
       success: function(response, textStatus, jqXHR){
           for(var i = 0; i < response.length; i++ ){
               var playlist = response[i]['fields'];
               // Do something now with your playlist object
               console.log(playlist.name);
           }
       },
       error: function(response, textStatus, jqXHR) {
       }
});

想法不错,但是
json.dumps(playlists)
不会做任何有用的事情,因为
json
不知道如何序列化查询集。是的,只是注意到它是一个QS,而不是一个对象。只是要更新一下
from django.core import serializers
...
json = serializers.serialize('json', playlists)
return HttpResponse(json, mimetype="application/json")
$.ajax({
       url: '/getUserPlaylists',
       dataType: "json",
       success: function(response, textStatus, jqXHR){
           for(var i = 0; i < response.length; i++ ){
               var playlist = response[i]['fields'];
               // Do something now with your playlist object
               console.log(playlist.name);
           }
       },
       error: function(response, textStatus, jqXHR) {
       }
});
[{ "model" : "playlist.Playlist", "pk" : 1, "fields" : { "name" : "...", ... } }]