- django-tastypie is one of the most widely used libraries to provide a REST interface from a django App.
- The ember-data default RESTAdapter does not follow the conventions used in django-tastypie.
- Instead of forcing the django developer to adapt tastypie to ember-data conventions, this adapter does the dirty work.
-
You can either:
- import the lib/tastypie_serializer.js and lib/tastypie_adapter.js files, or
- use the ember-data-tastypie-adapter package on your build process. or
- use dist/tastypie_adapter.js after running
bundle && bundle exec rakep build
or simplyrake dist
-
To use the adapter with your store:
Basic code to use the adapter:
App.ApplicationAdapter = DS.DjangoTastypieAdapter.extend({});
App.ApplicationSerializer = DS.DjangoTastypieSerializer.extend({});
Creating with several parameters:
App.ApplicationAdapter = DS.DjangoTastypieAdapter.extend({
serverDomain: "http://yourDomain.com",
namespace: "api/v1"
});
The standard django-tastypie configuration will do the work. However, some details are important:
i) ember-data always expects data in return (except in deletions). Make sure to configure your Resources with the meta option if you are going to perform POST or PUT operations:
class Meta:
always_return_data = True
ii) obviously, the permissions must be configured in the server to allow GET, POST, PUT and DELETE methods to provide fully access to CRUD operations. Usually, django-tastypie will require an Authorization meta option to allow writing
class Meta:
authorization = Authorization()
detail_allowed_methods = ['get', 'post', 'put', 'delete']
always_return_data = True
This adapter may be useful for someone in the ember.js/django community. If you want to extend it, please open issues and send pull requests.
This adapter does not support bulkCommits and does not plan to do it soon. django-tastypie REST implementation differs from the Ruby on Rails one, widely used by the ember.js community. Although bulkCommits can be implemented with PATCH operations, I didn't like the resulting adapter.
Go to the tests directory and type:
python -m SimpleHTTPServer
Go to http://localhost:8000/tests/ to run the Qunit tests.
# Run once
rake test
# Run continuosly listening for changes (OS X only)
rake autotest
In the meantime ember.js and ember-data reach 1.0, custom compilations have been used to test the adapter.
1.3.1+pre.d6a23272
1.0.0-beta.5+pre.69cb8b87
- Diego Muñoz Escalante
- Pepe Cano
- olofsj
- Mitchel Kelonye
- Dzmitry Dzemidzenka
- Pedro Kiefer
- Alex Goodwin
The MIT License (MIT)
Copyright (c) 2014 Diego Muñoz Escalante