diff options
| author | Tom Christie | 2013-12-08 23:52:55 -0800 |
|---|---|---|
| committer | Tom Christie | 2013-12-08 23:52:55 -0800 |
| commit | 712ab8e3dc7613764b0e401c0aa7855d988bb0cc (patch) | |
| tree | 9bbd389ee889d63c27ab6632e29cb85195cedb0c /rest_framework/request.py | |
| parent | 5eca31d161181a9f53e60d3fe04cdbdfacf8ff9d (diff) | |
| parent | 80ef2685e522fc87bd8af9767aa7b231c9991ea4 (diff) | |
| download | django-rest-framework-712ab8e3dc7613764b0e401c0aa7855d988bb0cc.tar.bz2 | |
Merge pull request #1262 from tomchristie/fix-1261
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..fcea2508 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. |
