diff options
Diffstat (limited to 'rest_framework/views.py')
| -rw-r--r-- | rest_framework/views.py | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/rest_framework/views.py b/rest_framework/views.py index 0aa1dd0d..790c76fa 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -124,6 +124,21 @@ class APIView(View):              description = escape(description).replace('\n', '<br />')          return mark_safe(description) +    def metadata(self, request): +        return { +            'name': self.get_name(), +            'description': self.get_description(), +            'renders': [renderer.media_type for renderer in self.renderer_classes], +            'parses': [parser.media_type for parser in self.parser_classes], +        } +        #  TODO: Add 'fields', from serializer info, if it exists. +        # serializer = self.get_serializer() +        # if serializer is not None: +        #     field_name_types = {} +        #     for name, field in form.fields.iteritems(): +        #         field_name_types[name] = field.__class__.__name__ +        #     content['fields'] = field_name_types +      def http_method_not_allowed(self, request, *args, **kwargs):          """          Called if `request.method` does not corrospond to a handler method. @@ -309,3 +324,11 @@ class APIView(View):          self.response = self.finalize_response(request, response, *args, **kwargs)          return self.response + +    def options(self, request, *args, **kwargs): +        """ +        Handler method for HTTP 'OPTIONS' request. +        We may as well implement this as Django will otherwise provide +        a less useful default implementation. +        """ +        return Response(self.metadata(request), status=status.HTTP_200_OK) | 
