aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/renderers.py
diff options
context:
space:
mode:
Diffstat (limited to 'djangorestframework/renderers.py')
-rw-r--r--djangorestframework/renderers.py33
1 files changed, 27 insertions, 6 deletions
diff --git a/djangorestframework/renderers.py b/djangorestframework/renderers.py
index e09e2abc..aae2cab2 100644
--- a/djangorestframework/renderers.py
+++ b/djangorestframework/renderers.py
@@ -11,16 +11,14 @@ from django.core.serializers.json import DateTimeAwareJSONEncoder
from django.template import RequestContext, loader
from django.utils import simplejson as json
-from djangorestframework import status
-from djangorestframework.compat import apply_markdown
+
+from djangorestframework.compat import apply_markdown, yaml
from djangorestframework.utils import dict2xml, url_resolves
from djangorestframework.utils.breadcrumbs import get_breadcrumbs
from djangorestframework.utils.description import get_name, get_description
from djangorestframework.utils.mediatypes import get_media_type_params, add_media_type_param, media_type_matches
from djangorestframework import VERSION
-from decimal import Decimal
-import re
import string
from urllib import quote_plus
@@ -31,7 +29,8 @@ __all__ = (
'DocumentingHTMLRenderer',
'DocumentingXHTMLRenderer',
'DocumentingPlainTextRenderer',
- 'XMLRenderer'
+ 'XMLRenderer',
+ 'YAMLRenderer'
)
@@ -131,6 +130,27 @@ class XMLRenderer(BaseRenderer):
return dict2xml(obj)
+if yaml:
+ class YAMLRenderer(BaseRenderer):
+ """
+ Renderer which serializes to YAML.
+ """
+
+ media_type = 'application/yaml'
+ format = 'yaml'
+
+ def render(self, obj=None, media_type=None):
+ """
+ Renders *obj* into serialized YAML.
+ """
+ if obj is None:
+ return ''
+
+ return yaml.dump(obj)
+else:
+ YAMLRenderer = None
+
+
class TemplateRenderer(BaseRenderer):
"""
A Base class provided for convenience.
@@ -361,4 +381,5 @@ DEFAULT_RENDERERS = ( JSONRenderer,
DocumentingPlainTextRenderer,
XMLRenderer )
-
+if YAMLRenderer:
+ DEFAULT_RENDERERS += (YAMLRenderer,)