Yes, you're right and I was wrong, the messages middleware doesn't
return response as-is. I'll take a look.

As for tests, response.context and response.templates are not
available for TemplateResponse instances before they are baked so test
client should be patched to explicitly bake the response. There is
response.template_context and response.template_name but their
semantics differ.


On 24 окт, 01:52, SmileyChris <smileych...@gmail.com> wrote:
> The points were just off the top of my head from memory, when I get
> back to work I'll have a look to see what the actual cases are.
>
> Regarding the messages middleware, I *know* there's a problem. A
> message won't be marked as "read", since the template hasn't iterated
> the messages object by the time the middleware is triggered
>
> On Oct 23, 8:35 am, Mikhail Korobov <kmik...@googlemail.com> wrote:
>
>
>
> > Hi Chris,
>
> > I don't see anything harmful neither in
> > django.contrib.messages.middleware.MessageMiddleware nor in
> > django.test.testcases.assertContains.
> > Messages middleware passes response as-is and assertContains reads
> > 'content' attribute and thus forces the baking.
>
> > at lest the following test case forks fine for me:
>
> > class AssertTestCase(TestCase):
> >     def test_assert_contains(self):
> >         request = RequestFactory().get('/')
> >         template = Template('foo')
> >         response = TemplateResponse(request, template)
> >         self.assertContains(response, 'oo')
>
> > Can you please provide more details?
>
> > On 23 окт, 00:21, SmileyChris <smileych...@gmail.com> wrote:
>
> > > In my use of TemplateResponse in a real project, we encountered two
> > > gotchas that I can think of off the top of my head:
>
> > > 1. You need to explicitly bake the response if you are testing using
> > > assertContains
> > > 2. You need to explicitly bake the response before the
> > > contrib.messages middleware
>
> > > On Oct 23, 1:32 am, Russell Keith-Magee <russ...@keith-magee.com>
> > > wrote:
>
> > > > On Fri, Oct 22, 2010 at 7:32 PM, Mikhail Korobov 
> > > > <kmik...@googlemail.com> wrote:
> > > > > Russell's comments were helpful in discovering the edge case.
> > > > > _set_content behaves differently for baked and non-baked responses:
>
> > > > > response = render(request, Template('foo'))
> > > > > response.content = 'bar'
> > > > > print response.content    # 'foo'
> > > > > response.content = 'baz'
> > > > > print response.content    # 'baz'
>
> > > > > This is confusing so I think responses should be marked as baked in
> > > > > _set_content, not in force_bake.
>
> > > > > The patch that should resolve this concern and Russell's concerns
> > > > > regarding the 
> > > > > tests:http://bitbucket.org/kmike/django/changeset/00f8be464749
>
> > > > > I'll take a look at docs and generic views integration later.
>
> > > > > Should new generic views return TemplateResponse by default?
>
> > > > I would have thought so. Is there a compelling reason why CBV's
> > > > shouldn't return a TemplateResponse?
>
> > > > Yours,
> > > > Russ Magee %-)

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-develop...@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to