Backbone.js и Django REST framework

Проходя курс Connected to the Backbone я использовал Django REST framework для построения простого апи, которое затем использовал в backbone приложении.

В backbone приложение мы используем простую модель для примера, а также добавим коллекцию для большей наглядности.

App.Models.Task = Backbone.Model.extend({
    defaults: {
        title: '',
        is_completed: false
    },
    urlRoot: '/tasks/'
});

App.Collections.Tasks = Backbone.Collection.extend({
    model: App.Models.Task,
    url: 'tasks/'
});

Модель в django приложении будет подоба нашей модели в backbone приложении.

class Task(models.Model):
    title = models.CharField('Title', max_length=1000)
    is_completed = models.BooleanField('Is completed', default=False)

Теперь нам нужно создать сериализатор для нашей модели задач и отображение для него.

class Task(models.Model):
    title = models.CharField('Title', max_length=1000)
    is_completed = models.BooleanField('Is completed', default=False)
class TaskViewSet(viewsets.ModelViewSet):
    model = Task
    serializer_class = TaskSerializer

Ну а затем самое главное, а именно урлы для работы с данными.

router = routers.DefaultRouter()
router.register(r'tasks', views.TaskViewSet)

urlpatterns = patterns('',
    url(r'^$', 'app.views.home', name='Home'),
    url(r'', include(router.urls)),
)

Далее добавим в базу несколько записей с которыми дальше будем работать.

[
    {'title': 'Begin write this posts', 'is_completed': 'true'},
    {'title': 'Go to the shops', 'is_completed': 'false'},
    {'title': 'Buy a new MacBook Pro', 'is_completed': 'false'}
]

Теперь можно проверить нашу модель и коллекцию в backbone приложении.

> var task = new App.Models.Task({id: 2});
> task.toJSON();
  Object {id: 2, title: "", is_completed: false}
> task.fetch();
> task.toJSON();
  Object {id: 2, title: "Go to the shops", is_completed: false}

> collections = new App.Collections.Tasks();
> collections.fetch();
> collections.toJSON();
  [Object, Object, Object]

Исходный код вы можете найти на гитхабе.