#24555: Wrong content in inclusion templatetags with variable parent template
-------------------------------------+-------------------------------------
     Reporter:  benjaminrigaud       |                    Owner:  Tim
                                     |  Graham <timograham@…>
         Type:  Bug                  |                   Status:  closed
    Component:  Template system      |                  Version:  1.8rc1
     Severity:  Release blocker      |               Resolution:  fixed
     Keywords:  templatetags         |             Triage Stage:  Ready for
  extends block cache                |  checkin
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by nealtodd):

 Although the ticket is closed I'm adding this comment in case anyone
 stumbles across the same esoteric gotcha I came across related to this
 change:

 After updating a project from 1.8c1 to 1.8 a bunch of tests that had been
 running cleanly started failing on `assertFormError` in the format of
 `AssertionError: The form 'form' in context X does not contain the field
 'foo'`.

 Long story short, the template had a 'main' form that was supplied via a
 context variable named 'form', but the base template also used an
 inclusion tag to render a site search form, and the inclusion tag's
 template was also supplied via a context variable named 'form'. The
 caching introduced in this commit meant that the inclusion tag's template
 now also appeared in the `response.context`, and so, when calling
 `self.assertFormError(response, "form", "foo", "expected error message")`
 [https://github.com/django/django/blob/master/django/test/testcases.py#L386
 assertFormError] looped over the context and found a form (the search
 form) without the intended field `foo` (as well as finding it as expected
 on the main form).

 The simple fix in this case was to scope the context key name of the
 search form to, e.g. 'search_form' for the inclusion tag's template.
 However as, ordinarily, a clash of key names used in the contexts for
 different templates shouldn't matter, I thought I'd note it here as it
 left me scratching my head for a while until I tracked in down.

--
Ticket URL: <https://code.djangoproject.com/ticket/24555#comment:11>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/072.832a585d3ac31df4983ac520b7e1ed20%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to