Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
7f536c1d
Commit
7f536c1d
authored
Jun 26, 2011
by
markotibold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Very basic YAML support. Probably needs some tweaking, and definitely needs tests.
parent
0b18b58c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
43 additions
and
5 deletions
+43
-5
djangorestframework/parsers.py
+23
-0
djangorestframework/renderers.py
+20
-5
No files found.
djangorestframework/parsers.py
View file @
7f536c1d
...
...
@@ -18,12 +18,15 @@ from djangorestframework import status
from
djangorestframework.response
import
ErrorResponse
from
djangorestframework.utils.mediatypes
import
media_type_matches
import
yaml
__all__
=
(
'BaseParser'
,
'JSONParser'
,
'PlainTextParser'
,
'FormParser'
,
'MultiPartParser'
,
'YAMLParser'
,
)
...
...
@@ -84,6 +87,26 @@ class JSONParser(BaseParser):
{
'detail'
:
'JSON parse error -
%
s'
%
unicode
(
exc
)})
class
YAMLParser
(
BaseParser
):
"""
Parses YAML-serialized data.
"""
media_type
=
'application/yaml'
def
parse
(
self
,
stream
):
"""
Returns a 2-tuple of `(data, files)`.
`data` will be an object which is the parsed content of the response.
`files` will always be `None`.
"""
try
:
return
(
yaml
.
safe_load
(
stream
),
None
)
except
ValueError
,
exc
:
raise
ErrorResponse
(
status
.
HTTP_400_BAD_REQUEST
,
{
'detail'
:
'YAML parse error -
%
s'
%
unicode
(
exc
)})
class
PlainTextParser
(
BaseParser
):
"""
...
...
djangorestframework/renderers.py
View file @
7f536c1d
...
...
@@ -11,7 +11,7 @@ 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.utils
import
dict2xml
,
url_resolves
from
djangorestframework.utils.breadcrumbs
import
get_breadcrumbs
...
...
@@ -19,10 +19,9 @@ 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
import
yaml
__all__
=
(
'BaseRenderer'
,
...
...
@@ -31,7 +30,8 @@ __all__ = (
'DocumentingHTMLRenderer'
,
'DocumentingXHTMLRenderer'
,
'DocumentingPlainTextRenderer'
,
'XMLRenderer'
'XMLRenderer'
,
'YAMLRenderer'
)
...
...
@@ -120,6 +120,20 @@ class XMLRenderer(BaseRenderer):
return
''
return
dict2xml
(
obj
)
class
YAMLRenderer
(
BaseRenderer
):
"""
Renderer which serializes to YAML.
"""
media_type
=
'application/yaml'
def
render
(
self
,
obj
=
None
,
media_type
=
None
):
"""
Renders *obj* into serialized YAML.
"""
if
obj
is
None
:
return
''
return
yaml
.
dump
(
obj
)
class
TemplateRenderer
(
BaseRenderer
):
"""
...
...
@@ -346,6 +360,7 @@ DEFAULT_RENDERERS = ( JSONRenderer,
DocumentingHTMLRenderer
,
DocumentingXHTMLRenderer
,
DocumentingPlainTextRenderer
,
XMLRenderer
)
XMLRenderer
,
YAMLRenderer
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment