mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #24493 -- Added BaseContext.setdefault()
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							4d9414098b
						
					
				
				
					commit
					388e79e9fc
				
			| @@ -89,6 +89,13 @@ class BaseContext(object): | ||||
|                 return d[key] | ||||
|         return otherwise | ||||
|  | ||||
|     def setdefault(self, key, default=None): | ||||
|         try: | ||||
|             return self[key] | ||||
|         except KeyError: | ||||
|             self[key] = default | ||||
|         return default | ||||
|  | ||||
|     def new(self, values=None): | ||||
|         """ | ||||
|         Returns a new context with the same properties, but with only the | ||||
|   | ||||
| @@ -420,6 +420,13 @@ dictionary syntax:: | ||||
|     Returns the value for ``key`` if ``key`` is in the context, else returns | ||||
|     ``otherwise``. | ||||
|  | ||||
| .. method:: Context.setdefault(key, default=None) | ||||
|  | ||||
|     .. versionadded:: 1.9 | ||||
|  | ||||
|     If ``key`` is in the context, returns its value. Otherwise inserts ``key`` | ||||
|     with a value of ``default`` and returns ``default``. | ||||
|  | ||||
| .. method:: Context.pop() | ||||
| .. method:: Context.push() | ||||
| .. exception:: ContextPopException | ||||
|   | ||||
| @@ -166,6 +166,9 @@ Templates | ||||
|   helper can now store results in a template variable by using the ``as`` | ||||
|   argument. | ||||
|  | ||||
| * Added a :meth:`Context.setdefault() <django.template.Context.setdefault>` | ||||
|   method. | ||||
|  | ||||
| Requests and Responses | ||||
| ^^^^^^^^^^^^^^^^^^^^^^ | ||||
|  | ||||
|   | ||||
| @@ -30,6 +30,17 @@ class ContextTests(SimpleTestCase): | ||||
|             self.assertEqual(c['a'], 3) | ||||
|         self.assertEqual(c['a'], 1) | ||||
|  | ||||
|     def test_setdefault(self): | ||||
|         c = Context() | ||||
|  | ||||
|         x = c.setdefault('x', 42) | ||||
|         self.assertEqual(x, 42) | ||||
|         self.assertEqual(c['x'], 42) | ||||
|  | ||||
|         x = c.setdefault('x', 100) | ||||
|         self.assertEqual(x, 42) | ||||
|         self.assertEqual(c['x'], 42) | ||||
|  | ||||
|     def test_resolve_on_context_method(self): | ||||
|         """ | ||||
|         #17778 -- Variable shouldn't resolve RequestContext methods | ||||
|   | ||||
		Reference in New Issue
	
	Block a user