diff options
| author | Tom Christie | 2013-12-03 08:58:05 +0000 | 
|---|---|---|
| committer | Tom Christie | 2013-12-03 08:58:05 +0000 | 
| commit | c1d9a96df03ea81454d7d0e3583c68e270ed5043 (patch) | |
| tree | 6f852e92b576ab0e77f300f9de48e5bb55586000 /rest_framework/request.py | |
| parent | fe4c7d4000675a1720e7d3e02c3014a693d835aa (diff) | |
| download | django-rest-framework-c1d9a96df03ea81454d7d0e3583c68e270ed5043.tar.bz2 | |
Catch errors during parsing and set empty .DATA/.FILES before re-raising.
Diffstat (limited to 'rest_framework/request.py')
| -rw-r--r-- | rest_framework/request.py | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/rest_framework/request.py b/rest_framework/request.py index b883d0d4..9b551aa8 100644 --- a/rest_framework/request.py +++ b/rest_framework/request.py @@ -356,7 +356,16 @@ class Request(object):          if not parser:              raise exceptions.UnsupportedMediaType(media_type) -        parsed = parser.parse(stream, media_type, self.parser_context) +        try: +            parsed = parser.parse(stream, media_type, self.parser_context) +        except: +            # If we get an exception during parsing, fill in empty data and +            # re-raise.  Ensures we don't simply repeat the error when +            # attempting to render the browsable renderer response, or when +            # logging the request or similar.  +            self._data = QueryDict('', self._request._encoding) +            self._files = MultiValueDict() +            raise          # Parser classes may return the raw data, or a          # DataAndFiles object.  Unpack the result as required. | 
