diff --git a/django/contrib/admin/templatetags/admin_modify.py b/django/contrib/admin/templatetags/admin_modify.py
index e55b3bf..a269ee0 100644
a
|
b
|
def prepopulated_fields_js(context):
|
16 | 16 | for inline_admin_form in inline_admin_formset: |
17 | 17 | if inline_admin_form.original is None: |
18 | 18 | prepopulated_fields.extend(inline_admin_form.prepopulated_fields) |
19 | | context.update({'prepopulated_fields': prepopulated_fields}) |
20 | | return context |
| 19 | return {'prepopulated_fields': prepopulated_fields} |
21 | 20 | |
22 | 21 | @register.inclusion_tag('admin/submit_line.html', takes_context=True) |
23 | 22 | def submit_row(context): |
diff --git a/django/template/base.py b/django/template/base.py
index e2fc66b..c61f256 100644
a
|
b
|
from functools import partial
|
5 | 5 | from inspect import getargspec |
6 | 6 | |
7 | 7 | from django.conf import settings |
8 | | from django.template.context import (Context, RequestContext, |
| 8 | from django.template.context import (BaseContext, Context, RequestContext, |
9 | 9 | ContextPopException) |
10 | 10 | from django.utils.importlib import import_module |
11 | 11 | from django.utils.itercompat import is_iterable |
… |
… |
class Library(object):
|
1186 | 1186 | else: |
1187 | 1187 | t = get_template(file_name) |
1188 | 1188 | self.nodelist = t.nodelist |
1189 | | new_context = context_class(_dict, **{ |
| 1189 | context_vars = { |
1190 | 1190 | 'autoescape': context.autoescape, |
1191 | 1191 | 'current_app': context.current_app, |
1192 | 1192 | 'use_l10n': context.use_l10n, |
1193 | 1193 | 'use_tz': context.use_tz, |
1194 | | }) |
| 1194 | } |
| 1195 | if isinstance(_dict, BaseContext): |
| 1196 | new_context = _dict |
| 1197 | new_context.update(context_vars) |
| 1198 | else: |
| 1199 | new_context = context_class(_dict, **context_vars) |
1195 | 1200 | # Copy across the CSRF token, if present, because |
1196 | 1201 | # inclusion tags are often used for forms, and we need |
1197 | 1202 | # instructions for using CSRF protection to be as simple |
diff --git a/tests/regressiontests/templates/custom.py b/tests/regressiontests/templates/custom.py
index 6bbbe35..ad62be2 100644
a
|
b
|
class CustomTagTests(TestCase):
|
181 | 181 | "'inclusion_unlimited_args_kwargs' received multiple values for keyword argument 'eggs'", |
182 | 182 | template.Template, '{% load custom %}{% inclusion_unlimited_args_kwargs 37 eggs="scrambled" eggs="scrambled" %}') |
183 | 183 | |
| 184 | t = template.Template('{% load custom %}{% inclusion_tag_returns_context %}') |
| 185 | self.assertEqual(t.render(c), u'inclusion_returning_context\n') |
| 186 | |
184 | 187 | def test_include_tag_missing_context(self): |
185 | 188 | # The 'context' parameter must be present when takes_context is True |
186 | 189 | self.assertRaisesRegexp(template.TemplateSyntaxError, |
diff --git a/tests/regressiontests/templates/templatetags/custom.py b/tests/regressiontests/templates/templatetags/custom.py
index 7f78831..cfa727f 100644
a
|
b
|
def inclusion_tag_without_context_parameter(arg):
|
233 | 233 | return {} |
234 | 234 | inclusion_tag_without_context_parameter.anything = "Expected inclusion_tag_without_context_parameter __dict__" |
235 | 235 | |
| 236 | @register.inclusion_tag('inclusion.html', takes_context=True) |
| 237 | def inclusion_tag_returns_context(context): |
| 238 | context.update({"result": "inclusion_returning_context"}) |
| 239 | return context |
| 240 | |
236 | 241 | @register.assignment_tag |
237 | 242 | def assignment_no_params(): |
238 | 243 | """Expected assignment_no_params __doc__""" |