On Fri, May 10, 2013 at 9:37 AM, Larry Martell <[email protected]> wrote:
> On Fri, May 10, 2013 at 8:55 AM, Tom Evans <[email protected]> wrote:
>> On Fri, May 10, 2013 at 2:52 PM, Larry Martell <[email protected]> 
>> wrote:
>>> Just upgraded to 1.5 and my app is failing with:
>>>
>>> Internal Server Error:
>>> Traceback (most recent call last):
>>> File "/Library/Python/2.7/site-packages/django/core/handlers/base.py",
>>> line 187, in get_response
>>>      response = middleware_method(request, response)
>>>    File 
>>> "/Library/Python/2.7/site-packages/django/contrib/sessions/middleware.py",
>>> line 26, in process_response
>>>      patch_vary_headers(response, ('Cookie',))
>>>    File "/Library/Python/2.7/site-packages/django/utils/cache.py",
>>> line 142, in patch_vary_headers
>>>      if response.has_header('Vary'):
>>>  [error] AttributeError: 'function' object has no attribute 'has_header'
>>>
>>> My code that is triggering this:
>>>
>>> if report_response.has_header('Content-disposition'):
>>>
>>> I didn't see anything in the docs that said this method was being
>>> removed from the HttpResponse class.
>>>
>>
>> It hasn't. If you look at the exception message closely, you will see
>> that it does not say "HttpResponse object has no attribute ...", it
>> says "function object has no attribute ...". Somehow, this middleware
>> is receiving a function instead of a response object.
>>
>>> Anyone know how I can fix this so I can use 1.5?
>>>
>>
>> The full stack trace may explain more, but then again maybe not - the
>> exception happens in middleware processing, but the error is returning
>> a function instead of a HttpResponse object in the content generation
>> phase (ie in the view). You will probably need to look closely at each
>> function the request passes through on this particular request, and
>> work out where the bogus return value is coming from.
>
> That is the full stack trace. I have just one piece of middleware:
>
> import re
> class LastSiteUrl(object):
>
>     def is_admin_url(self, url):
>         if re.search('^(http:\/\/.*){0,1}\/admin\/', url) is None: 
> return(False)
>         else: return(True)
>
>     def process_request(self, request):
>         if self.is_admin_url(request.path) and \
>             not self.is_admin_url(request.META['HTTP_REFERER']):
>             request.session['last_site_url'] = request.META['HTTP_REFERER']
>
> I don't see how that could be causing this. What changed in 1.5 to
> break this? In 1.4 I do not get this error with the same middleware.

I traced it all through base.py and the issue seems to be that my
views don't return a HttpResponse object. I have to go back to 1.4 and
my old code and see what it's returning there (I made a lot of changes
for direct_to_template and redirect_to). I wouldn't think an upgrade
would require so many changes :-(

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to