backbone.js使用骨干集合翻译django服务器模板

时间:2013-03-03 23:45:36

标签: backbone.js mustache tastypie icanhaz.js

我习惯用http请求定义我的django视图,该请求使用我可以迭代并显示的python数据字典发回http响应。我试图用backbone.js替换它。

目前我有这样的设置:

<ul id="teaching_students">

 {% for student in students.object_list %}
    <li class="selected">
      <span> {{ student.name }} </span>
    </li>
 {% endfor %}
</ul>

我希望使用ICanHaz.js和Mustache.js作为javascript模板来填充客户端{{ student.name}}

到目前为止使用tastypie,我有一个PersonResource,当所有的学生都通过时,所有学生都会以json对象的形式返回。

http://127.0.0.1:8000/api/people/?format=json
  1. 我是否需要在views.py中为此网址生成API视图,如果是这样,它看起来像什么?
  2. 我如何在backbone.js中调用此网址并设置集合,视图和正确的路由?
  3. 我的客户端结构被分解为views/models(我使用require.js将它们组合在一起)。

    我正在使用几个插件来帮助弥合主干和tastypie(backbone-tastypie.js)之间的差距,但我真的想看看其他人如何用REST api和backbone.js取代传统的django模板渲染

    编辑:添加Backbone模型,这是我正在使用的模型

    define([
        'underscore',
        'backbone'
    ], function(_, Backbone) {
    
        var PersonModel = Backbone.Model.extend({
    
            defaults : {
    
            },
    
            initialize: function( options ) {
    
            },
    
            parse : function(res) {
                // because of jsonp
                return res.data;
            }
    
        });
    
        return PersonModel;
    
    });
    

1 个答案:

答案 0 :(得分:0)

所以你想从服务器端渲染转向客户端渲染?这意味着 你需要额外的http请求。但这是可能的。

  

我是否需要在views.py中为此网址生成API视图,如果是这样的话   这看起来像吗?

一旦您指定了ModelResourceurlpattern,美味派就可以完成所有工作。 您无需在应用程序的views.py中使用其他功能来处理http请求 - 响应周期。

  1. 查看tasty pie tutorial,了解如何将资源挂钩到网址。
  2. 使用Postman chrome extension之类的测试REST客户端查看一切是否正常。
  3.   

    如何在backbone.js中调用此URL并设置集合视图   和正确的路线?

    1. 像对待任何其他人一样对待api。将模型的url字段设置为

      /api/people/?format=json

    2. 让您的观点倾听change

    3. PersonModel事件
    4. Fetch模特。

    5. 收到数据时,使用您选择的模板引擎渲染视图。

    6. 另请参阅Adding REST to Django了解有关为django应用程序提供RESTful接口的选项。