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
This commit is contained in:
Jannis Leidel 2011-05-22 15:05:29 +00:00
parent 80d6089029
commit fc8116cc4f
3 changed files with 17 additions and 5 deletions

View File

@ -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 @@ class MultiValueDict(dict):
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_):

View File

@ -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_)

View File

@ -206,6 +206,8 @@ class MultiValueDictTests(DatastructuresTestCase):
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'])