aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorTom Christie2012-10-05 10:23:47 +0100
committerTom Christie2012-10-05 10:23:47 +0100
commitd07dc77e91c1f99b47915b3cef30b565f2618e82 (patch)
tree9f68ca55f685090f1672a557ce985931ccee47b3 /docs
parentad5e6eb16f4db928e1fc8d0a6af4f9f4584f7b08 (diff)
downloaddjango-rest-framework-d07dc77e91c1f99b47915b3cef30b565f2618e82.tar.bz2
Accepted media type uses most specific of client/renderer media types.
Diffstat (limited to 'docs')
-rw-r--r--docs/api-guide/generic-views.md29
-rw-r--r--docs/api-guide/renderers.md14
-rw-r--r--docs/index.md2
3 files changed, 31 insertions, 14 deletions
diff --git a/docs/api-guide/generic-views.md b/docs/api-guide/generic-views.md
index b2284ae5..571cc66f 100644
--- a/docs/api-guide/generic-views.md
+++ b/docs/api-guide/generic-views.md
@@ -18,24 +18,25 @@ If the generic views don't suit the needs of your API, you can drop down to usin
Typically when using the generic views, you'll override the view, and set several class attributes.
class UserList(generics.ListCreateAPIView):
- serializer = UserSerializer
model = User
- permissions = (IsAdminUser,)
+ serializer_class = UserSerializer
+ permission_classes = (IsAdminUser,)
paginate_by = 100
For more complex cases you might also want to override various methods on the view class. For example.
class UserList(generics.ListCreateAPIView):
- serializer = UserSerializer
model = User
- permissions = (IsAdminUser,)
+ serializer_class = UserSerializer
+ permission_classes = (IsAdminUser,)
def get_paginate_by(self):
"""
Use smaller pagination for HTML representations.
"""
- if self.request.accepted_media_type == 'text/html':
- return 10
+ page_size_param = self.request.QUERY_PARAMS.get('page_size')
+ if page_size_param:
+ return int(page_size_param)
return 100
For very simple cases you might want to pass through any class attributes using the `.as_view()` method. For example, your URLconf might include something the following entry.
@@ -52,24 +53,32 @@ Used for read-only endpoints to represent a collection of model instances.
Provides a `get` method handler.
+Extends: [MultipleObjectBaseAPIView], [ListModelMixin]
+
## ListCreateAPIView
Used for read-write endpoints to represent a collection of model instances.
Provides `get` and `post` method handlers.
+Extends: [MultipleObjectBaseAPIView], [ListModelMixin], [CreateModelMixin]
+
## RetrieveAPIView
Used for read-only endpoints to represent a single model instance.
Provides a `get` method handler.
+Extends: [SingleObjectBaseAPIView], [RetrieveModelMixin]
+
## RetrieveUpdateDestroyAPIView
Used for read-write endpoints to represent a single model instance.
Provides `get`, `put` and `delete` method handlers.
+Extends: [SingleObjectBaseAPIView], [RetrieveModelMixin], [UpdateModelMixin], [DestroyModelMixin]
+
---
# Base views
@@ -123,3 +132,11 @@ Provides a `.destroy(request, *args, **kwargs)` method, that implements deletion
[SingleObjectMixin]: https://docs.djangoproject.com/en/dev/ref/class-based-views/mixins-single-object/
[multiple-object-mixin-classy]: http://ccbv.co.uk/projects/Django/1.4/django.views.generic.list/MultipleObjectMixin/
[single-object-mixin-classy]: http://ccbv.co.uk/projects/Django/1.4/django.views.generic.detail/SingleObjectMixin/
+
+[SingleObjectBaseAPIView]: #singleobjectbaseapiview
+[MultipleObjectBaseAPIView]: #multipleobjectbaseapiview
+[ListModelMixin]: #listmodelmixin
+[CreateModelMixin]: #createmodelmixin
+[RetrieveModelMixin]: #retrievemodelmixin
+[UpdateModelMixin]: #updatemodelmixin
+[DestroyModelMixin]: #destroymodelmixin \ No newline at end of file
diff --git a/docs/api-guide/renderers.md b/docs/api-guide/renderers.md
index 134c3749..e1c83477 100644
--- a/docs/api-guide/renderers.md
+++ b/docs/api-guide/renderers.md
@@ -115,7 +115,6 @@ For example:
@api_view(('GET',))
@renderer_classes((TemplateHTMLRenderer, JSONRenderer))
- @template_name('list_users.html')
def list_users(request):
"""
A view that can return JSON or HTML representations
@@ -123,15 +122,16 @@ For example:
"""
queryset = Users.objects.filter(active=True)
- if request.accepted_renderer.format == 'html':
+ if request.accepted_media_type == 'text/html':
# TemplateHTMLRenderer takes a context dict,
- # and does not require serialization.
+ # and additionally requiresa 'template_name'.
+ # It does not require serialization.
data = {'users': queryset}
- else:
- # JSONRenderer requires serialized data as normal.
- serializer = UserSerializer(instance=queryset)
- data = serializer.data
+ return Response(data, template='list_users.html')
+ # JSONRenderer requires serialized data as normal.
+ serializer = UserSerializer(instance=queryset)
+ data = serializer.data
return Response(data)
## Designing your media types
diff --git a/docs/index.md b/docs/index.md
index e301f77a..0b49c5ec 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -58,7 +58,7 @@ Note that the base URL can be whatever you want, but you must include `rest_fram
## Quickstart
-**TODO**
+
## Tutorial