summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2011-05-22 15:05:29 +0000
committerJannis Leidel <jannis@leidel.info>2011-05-22 15:05:29 +0000
commitfc8116cc4f5f27911c7685649ebac0a96fb39a49 (patch)
tree93e27b7d1ee8a206851a96dde3b6f934e59af95d
parent80d60890290768267230dfcff7e70a1343fdbc25 (diff)
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
-rw-r--r--django/utils/datastructures.py10
-rw-r--r--docs/ref/request-response.txt10
-rw-r--r--tests/regressiontests/utils/datastructures.py2
3 files changed, 17 insertions, 5 deletions
diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py
index ff281b032a..b0b449c76d 100644
--- a/django/utils/datastructures.py
+++ b/django/utils/datastructures.py
@@ -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_):
diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt
index d4ff40a746..72872d5b40 100644
--- a/docs/ref/request-response.txt
+++ b/docs/ref/request-response.txt
@@ -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_)
diff --git a/tests/regressiontests/utils/datastructures.py b/tests/regressiontests/utils/datastructures.py
index 3ef1342325..2f1a47a656 100644
--- a/tests/regressiontests/utils/datastructures.py
+++ b/tests/regressiontests/utils/datastructures.py
@@ -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'])