【问题标题】:Confusion about Backbone.js and Django关于 Backbone.js 和 Django 的困惑
【发布时间】:2012-06-22 07:10:25
【问题描述】:

我正在尝试将 Backbone.js 用于我的 Django 项目,这很令人困惑。所以据我了解,我需要 tastypie 来使用我刚接触的 Django 的 RESTful API,例如,我有一个 SongResource,如下所示:

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 视图?

如果你能看出我的困惑,请指导我阅读一些文章、教程、视频等等!

非常感谢

【问题讨论】:

  • 也许将前端和后端系统视为彼此“独立”会帮助您解耦您的思维过程:)

标签: javascript django rest backbone.js tastypie


【解决方案1】:

您绝对必须在 Django 端进行过滤 :) 我对美味派一无所知,但是作为当前(登录)用户,您在 django 会话中拥有它,因此您不能依赖Meta.queryset,而是查询集每个请求的变化。你可能需要重写一些视图方法。

在保存听过的歌曲时,您首先决定何时执行此操作(歌曲开始或结束),然后在该事件中您 save() some Listening (Backbone) 模型,这将触发 XHR 请求(参见 @ 987654324@).

是的,如果你在客户端使用它们,你应该为你的 Django 模型建立对应的 Backbone 模型。再次,请参阅Backbone.sync

【讨论】:

  • 好吧,假设这首歌完成后被视为listened to。 Backbone 会向 Django 发送请求,对吗?如果是这样,我应该以“经典”方式在 Django 视图中处理该请求吗?所以 API 的重点是只为 Backbone 提供数据并允许它对其进行操作?
  • 例如,如果在我的路由器中我有/playlist/:id,这意味着在我的 URLconf 中我必须有类似url(r'^playlist/(?P<id>.$)' 的内容并分配一个处理请求的视图(比如保存创建的播放列表等等等等)?谢谢你对我的包容。
猜你喜欢
  • 2012-07-02
  • 2014-10-30
  • 2011-12-13
  • 2017-12-04
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 2020-03-06
相关资源
最近更新 更多