2012-06-22 41 views
0

我正在尝试为我的Django项目使用Backbone.js,这很让人困惑。所以我的理解,我需要tastypie与Django的REST风格的API,而我是新的,所以,比如我有一个像SongResource如下:关于Backbone.js和Django的混淆

class SongResource(ModelResource): 
    class Meta: 
     queryset = Song.objects.all() 
     authorization = Authorization() 

所有这样做是回来的全部名单我在数据库中拥有的歌曲,对吧?据我的理解,我应该在Backbone.js路由器中使用它来获取所有歌曲,然后在我的JS代码中完成所有数据操作,而不是Django的视图? 因此,如果我想获取登录用户购买的所有歌曲,我应该从Django获取所有歌曲,并在JS代码中搜索用户的歌曲? 另外,如果我想保存用户收听的歌曲,例如,我习惯于通过向保存操作的视图发送Ajax请求来完成此操作。

另一件事是,假设我在我的Django应用程序中有五个模型,我应该在Backbone.js中创建给定模型吗? 所以在Backbone.js中,我只是从Django获取数据,并在前端操纵它们,而不是像我习惯的那样在Django视图中操作它们?

如果你能看到我的困惑,请指导我一些文章,教程,视频!

非常感谢

+0

也许将前后台系统视为彼此“独立”将有助于解耦您的思维过程:) – PhD

+0

如何独立? –

回答

0

你一定要做的Django上侧的滤波:)我一无所知tastypie,但截至目前(登录)的用户,你必须在Django的会话,因此你可以不依赖在Meta.queryset,而是查询集更改为每个请求。您可能需要重写一些视图方法。

随着节能听的歌曲,你首先要决定何时做(启动或歌曲的结尾),并在该事件中,你save()一些Listening(骨干)模型,将触发XHR请求(参见Backbone.sync)。

是的,如果你使用它们的客户端,你应该为你的Django模型的Backbone模型对应。同样,请参阅Backbone.sync

+0

好吧,让我们说这首歌完成后被认为是“听”了。 Backbone会向Django发送请求,对吗?如果是这样,我应该在Django视图中以“古典”的方式处理这个请求吗?所以API的重点是只给数据提供Backbone并允许其操纵它? –

+0

这将是最简单,最可读的方式。 – skrat

+0

所以例如,如果在我的路由器中有'/ playlist /:id'这意味着在我的URLconf中我必须有'url(r'^ playlist /(?P 。$)'''并且分配一个视图处理请求(如保存已创建的播放列表等)等等?感谢您对我的支持。 –