| Format | TastyPie | DRF | Nap |
|---|---|---|---|
| JSON |
|
|
|
| JSONP |
|
|
|
| XML |
|
|
|
| YAML |
|
|
|
| HTML (forms) |
|
|
|
| PLIST |
|
|
|
| MsgPack |
|
|
|
| Framework | Structure | Stateful? | Pattern |
|---|---|---|---|
| TastyPie | Monolitic | Stateless | Build + Set |
| DRF | Stand-alone | Stateful | restore_object |
| Nap | Stand-alone | Stateless | restore_object |
resource = ThingResource()
def thing_list(request, **kwargs):
base_bundle = self.build_bundle(request=request)
objects = resource.obj_get_list(bundle=base_bundle, **resource.remove_api_resource_names(kwargs))
sorted_objects = resource.apply_sorting(objects, options=request.GET)
paginator = resource._meta.paginator_class(request.GET,
sorted_objects,
resource_uri=resource.get_resource_uri(),
limit=resource._meta.limit,
max_limit=resource._meta.max_limit,
collection_name=resource._meta.collection_name
)
to_be_serialized = paginator.page()
bundles = [
resource.full_dehydrate(
resource.build_bundle(obj=obj, request=request),
for_list=True
)
for obj in to_be_serialized[resource._meta.collection_name]
]
to_be_serialized[resource._meta.collection_name] = bundles
to_be_serialized = resource.alter_list_data_to_serialize(request, to_be_serialized)
return render(request, 'thing/thing_list.html', {'resource': to_be_serialized})
def thing_list(request, **kwargs):
try:
publisher = ThingPublisher(request, **kwargs)
data = publisher.get_page(publisher.get_object_list())
serialiser = publisher.get_serialiser()
data['objects'] = serialiser.list_deflate(data['objects'])
except http.BaseHttpResponse as e:
return e
return render(request, 'thing/thing_list.html', {'resource': data})
github.com/funkybob/django-nap