Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #6580 -- Added `default` parameter to `MultiValueDict.getlist` …

…method (the base class for `QueryDict`). Many thanks to mk and andrewebdev.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16260 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit fc8116cc4f5f27911c7685649ebac0a96fb39a49 1 parent 80d6089
Jannis Leidel jezdez authored
10 django/utils/datastructures.py
View
@@ -228,6 +228,10 @@ class MultiValueDict(dict):
'Simon'
>>> d.getlist('name')
['Adrian', 'Simon']
+ >>> d.getlist('doesnotexist')
+ []
+ >>> d.getlist('doesnotexist', ['Adrian', 'Simon'])
+ ['Adrian', 'Simon']
>>> d.get('lastname', 'nonexistent')
'nonexistent'
>>> d.setlist('lastname', ['Holovaty', 'Willison'])
@@ -300,14 +304,16 @@ def get(self, key, default=None):
return default
return val
- def getlist(self, key):
+ def getlist(self, key, default=None):
"""
Returns the list of values for the passed key. If key doesn't exist,
- then an empty list is returned.
+ then a default value is returned.
"""
try:
return super(MultiValueDict, self).__getitem__(key)
except KeyError:
+ if default is not None:
+ return default
return []
def setlist(self, key, list_):
10 docs/ref/request-response.txt
View
@@ -448,11 +448,15 @@ In addition, ``QueryDict`` has the following methods:
standard library. The copy will be mutable -- that is, you can change its
values.
-.. method:: QueryDict.getlist(key)
+.. method:: QueryDict.getlist(key, default)
Returns the data with the requested key, as a Python list. Returns an
- empty list if the key doesn't exist. It's guaranteed to return a list of
- some sort.
+ empty list if the key doesn't exist and no default value was provided.
+ It's guaranteed to return a list of some sort unless the default value
+ was no list.
+
+ .. versionchanged:: 1.4
+ The ``default`` parameter was added.
.. method:: QueryDict.setlist(key, list_)
2  tests/regressiontests/utils/datastructures.py
View
@@ -206,6 +206,8 @@ def test_multivaluedict(self):
self.assertEqual(d.get('lastname'), None)
self.assertEqual(d.get('lastname', 'nonexistent'), 'nonexistent')
self.assertEqual(d.getlist('lastname'), [])
+ self.assertEqual(d.getlist('doesnotexist', ['Adrian', 'Simon']),
+ ['Adrian', 'Simon'])
d.setlist('lastname', ['Holovaty', 'Willison'])
self.assertEqual(d.getlist('lastname'), ['Holovaty', 'Willison'])
Please sign in to comment.
Something went wrong with that request. Please try again.