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
c93ddf17
Commit
c93ddf17
authored
Apr 15, 2014
by
Carlton Gibson
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1520 from hroncok/patch-2
Allow unicode YAML dump
parents
b3b0515a
617c9825
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
2 deletions
+42
-2
docs/api-guide/renderers.md
+20
-0
rest_framework/renderers.py
+10
-1
rest_framework/tests/test_renderers.py
+12
-1
No files found.
docs/api-guide/renderers.md
View file @
c93ddf17
...
...
@@ -138,6 +138,26 @@ Renders the request data into `YAML`.
Requires the
`pyyaml`
package to be installed.
Note that non-ascii characters will be rendered using
`\uXXXX`
character escape. For example:
unicode black star: "\u2605"
**.media_type**
:
`application/yaml`
**.format**
:
`'.yaml'`
**.charset**
:
`utf-8`
## UnicodeYAMLRenderer
Renders the request data into
`YAML`
.
Requires the
`pyyaml`
package to be installed.
Note that non-ascii characters will not be character escaped. For example:
unicode black star: ★
**.media_type**
:
`application/yaml`
**.format**
:
`'.yaml'`
...
...
rest_framework/renderers.py
View file @
c93ddf17
...
...
@@ -193,6 +193,7 @@ class YAMLRenderer(BaseRenderer):
format
=
'yaml'
encoder
=
encoders
.
SafeDumper
charset
=
'utf-8'
ensure_ascii
=
True
def
render
(
self
,
data
,
accepted_media_type
=
None
,
renderer_context
=
None
):
"""
...
...
@@ -203,7 +204,15 @@ class YAMLRenderer(BaseRenderer):
if
data
is
None
:
return
''
return
yaml
.
dump
(
data
,
stream
=
None
,
encoding
=
self
.
charset
,
Dumper
=
self
.
encoder
)
return
yaml
.
dump
(
data
,
stream
=
None
,
encoding
=
self
.
charset
,
Dumper
=
self
.
encoder
,
allow_unicode
=
not
self
.
ensure_ascii
)
class
UnicodeYAMLRenderer
(
YAMLRenderer
):
"""
Renderer which serializes to YAML.
Does *not* apply character escaping for non-ascii characters.
"""
ensure_ascii
=
False
class
TemplateHTMLRenderer
(
BaseRenderer
):
...
...
rest_framework/tests/test_renderers.py
View file @
c93ddf17
...
...
@@ -12,7 +12,7 @@ from rest_framework.compat import yaml, etree, patterns, url, include, six, Stri
from
rest_framework.response
import
Response
from
rest_framework.views
import
APIView
from
rest_framework.renderers
import
BaseRenderer
,
JSONRenderer
,
YAMLRenderer
,
\
XMLRenderer
,
JSONPRenderer
,
BrowsableAPIRenderer
,
UnicodeJSONRenderer
XMLRenderer
,
JSONPRenderer
,
BrowsableAPIRenderer
,
UnicodeJSONRenderer
,
UnicodeYAMLRenderer
from
rest_framework.parsers
import
YAMLParser
,
XMLParser
from
rest_framework.settings
import
api_settings
from
rest_framework.test
import
APIRequestFactory
...
...
@@ -467,6 +467,17 @@ if yaml:
self
.
assertTrue
(
string
in
content
,
'
%
r not in
%
r'
%
(
string
,
content
))
class
UnicodeYAMLRendererTests
(
TestCase
):
"""
Tests specific for the Unicode YAML Renderer
"""
def
test_proper_encoding
(
self
):
obj
=
{
'countries'
:
[
'United Kingdom'
,
'France'
,
'España'
]}
renderer
=
UnicodeYAMLRenderer
()
content
=
renderer
.
render
(
obj
,
'application/yaml'
)
self
.
assertEqual
(
content
.
strip
(),
'countries: [United Kingdom, France, España]'
.
encode
(
'utf-8'
))
class
XMLRendererTestCase
(
TestCase
):
"""
Tests specific to the XML Renderer
...
...
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