#15668: Generic views should provide a HEAD implementation
-----------------------------------------+-----------------------
Reporter: j4mie | Owner: nobody
Status: new | Milestone:
Component: Generic views | Version: 1.3-rc1
Resolution: | Keywords:
Triage Stage: Unreviewed | Has patch: 1
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 1 |
-----------------------------------------+-----------------------
Changes (by j4mie):
* needs_better_patch: 0 => 1
* has_patch: 0 => 1
Comment:
I have added an initial patch, which probably needs improvement.
1. Is the `as_view` method the correct place to add in the `head = get`
patch?
2. I had to make some changes to the tests to make this work. All the
other tests in the `ViewTest` class use a `RequestFactory`, but I had to
use the `TestClient` to make sure the content of the response was stripped
correctly. This begs the question: should the content removal be done in
the `View` class itself to prevent inconsistencies? Something like this
maybe:
{{{#!python
def head_if_get(self, request, *args, **kwargs):
# This method adds support for HEAD requests. If
# a View subclass provides a get method, this method
# is automatically aliased to head by as_view above.
def remove_content(response):
response.content = ''
response = self.get(request, *args, **kwargs)
if hasattr(response, 'add_post_render_callback'):
response.add_post_render_callback(remove_content)
else:
remove_content(response)
return response
}}}
Then
{{{#!python
if hasattr(self, 'get') and not hasattr(self, 'head'):
self.head = self.head_if_get
}}}
--
Ticket URL: <http://code.djangoproject.com/ticket/15668#comment:3>
Django <http://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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.