jQuery:如何读取Django视图返回的自定义对象? [英] jQuery: How to read custom object returned by Django view?
问题描述
这里是我的 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) {
}
});
视图返回播放列表对象列表
the view return the list of Playlist objects
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>]
Playlist
的模式模型是
class Playlist(models.Model):
name = models.CharField(max_length=30)
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
deleted = models.BooleanField(default=False)
当我登录firebug时,我看到他们为
When I log them in firebug I see them as
Playlist objectPlaylist objectPlaylist objectPlaylist object
如何在jQuery中读取这些对象?
How can I read these objects in jQuery?
推荐答案
你需要返回一个表单中的Python对象,javascript可以理解哪个通常是 json (JavaScript对象符号)。所以在你看来,使用django的 serializer 将你的django queryset转换成json:
You need to return the Python objects in a form javascript can understand which is usually json (javascript object notation). So in your view, convert your django queryset into json, using django's serialisers:
from django.core import serializers
...
json = serializers.serialize('json', playlists)
return HttpResponse(json, mimetype="application/json")
和在您的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) {
}
});
这将意味着您的ajax中的响应
成功
将是这样的(一个javascript对象的列表):
this will mean the response
in your ajax success
will be something like this (a list of javascript objects) :
[{ "model" : "playlist.Playlist", "pk" : 1, "fields" : { "name" : "...", ... } }]
这篇关于jQuery:如何读取Django视图返回的自定义对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!