django - 我如何从 Tastypie JSON 访问 Backbone 集合元素?

标签 django json backbone.js tastypie

我用 Tastypie-Django 写了一个 API,我想用 Backbone 做一个网页来更简单地访问模型。我在 Backbone 中创建了一个模型和一个这样的集合:

var Abstract =  Backbone.Model.extend({
    defaults : {
   }
});

var AbstractCollection = Backbone.Collection.extend({
   model: Abstract,
   url : "http://192.168.0.195/api/v1/abstract/?format=json"
});

在View中写的fetch方法是这样的:

var abs = new PocketsAbstractCollection();
abs.fetch({
     success: function (collection, response) {
         console.log(abs.length);
         console.log(abs.models);
      }
 });

问题是我从这个表单收到了一个 JSON:

  {"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 12}, "objects": [{ ... }]}

当我在属性中看到集合模型时,我有 2 个元素,一个 Meta 和一个带有元素的对象数组。如何访问对象数组元素?

如果我写 abs.attributes 这会给我一个错误。

attributes: Object
  meta: Object
  objects: Array[12]
    0: Object
    1: Object
    2: Object
    3: Object
    4: Object
    .
    .
    .
   length: 12

有人可以帮助我吗?

谢谢!!

最佳答案

Backbone 期望接收一个对象数组。

Tastypie 返回“对象”属性下的对象数组。

将 API 响应操作为 Backbone 想要的格式的推荐方法是通过集合的 parse function :

var AbstractCollection = Backbone.Collection.extend({
   model: Abstract,

   url : "http://192.168.0.195/api/v1/abstract/?format=json",

   parse: function(response) {
      return response.objects;
   }
});

您还可以使用 Backbone-Tastypie“插件”:https://github.com/PaulUithol/backbone-tastypie

关于django - 我如何从 Tastypie JSON 访问 Backbone 集合元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623284/

相关文章:

django - 在 Django 中处理额外用户数据的正确方法?

python - Django '<object> matching query does not exist' 当我在数据库中看到它时

django - 获取使用 celery cord 创建的所有任务的 task_ids

json - $ .get使用google API检索YouTube视频,在IE中不返回任何内容

java - Android JSON 数据未解析为 ListView

javascript - 从主干集合中获取每个模型

javascript - 在 underScore.js 中创建多个 _.templateSettings

django - Digital Ocean上的Docker中的Django-Anymail的“Mailgun Magnificent API”错误

json - 将结构转换为 json 数组而不是 json 对象

javascript - Backbone.js 设置