1
0
mirror of https://github.com/django/django.git synced 2025-07-04 01:39:20 +00:00

[soc2009/http-wsgi-improvements] Moved common code from core.handlers.modpython and core.handlers.wsgi into core.handlers.base.process_request.

Passes regression tests.

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/http-wsgi-improvements@11039 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Chris Cahoon 2009-06-18 05:01:23 +00:00
parent bab5ab348e
commit a86d5ddc77
3 changed files with 22 additions and 32 deletions

View File

@ -63,6 +63,26 @@ class BaseHandler(object):
# as a flag for initialization being complete. # as a flag for initialization being complete.
self._request_middleware = request_middleware self._request_middleware = request_middleware
def process_request(self, request_env):
signals.request_started.send(sender=self.__class__)
try:
try:
request = self.request_class(request_env)
except UnicodeDecodeError:
response = http.HttpResponseBadRequest()
else:
response = self.get_response(request)
# Apply response middleware
if not isinstance(response, http.HttpResponseSendFile):
for middleware_method in self._response_middleware:
response = middleware_method(request, response)
response = self.apply_response_fixes(request, response)
finally:
signals.request_finished.send(sender=self.__class__)
return response
def get_response(self, request): def get_response(self, request):
"Returns an HttpResponse object for the given HttpRequest" "Returns an HttpResponse object for the given HttpRequest"
from django.core import exceptions, urlresolvers from django.core import exceptions, urlresolvers

View File

@ -2,7 +2,6 @@ import os
from pprint import pformat from pprint import pformat
from django import http from django import http
from django.core import signals
from django.core.handlers.base import BaseHandler from django.core.handlers.base import BaseHandler
from django.core.urlresolvers import set_script_prefix from django.core.urlresolvers import set_script_prefix
from django.utils import datastructures from django.utils import datastructures
@ -191,21 +190,7 @@ class ModPythonHandler(BaseHandler):
self.load_middleware() self.load_middleware()
set_script_prefix(req.get_options().get('django.root', '')) set_script_prefix(req.get_options().get('django.root', ''))
signals.request_started.send(sender=self.__class__) response = self.process_request(req)
try:
try:
request = self.request_class(req)
except UnicodeDecodeError:
response = http.HttpResponseBadRequest()
else:
response = self.get_response(request)
# Apply response middleware
for middleware_method in self._response_middleware:
response = middleware_method(request, response)
response = self.apply_response_fixes(request, response)
finally:
signals.request_finished.send(sender=self.__class__)
# Convert our custom HttpResponse object back into the mod_python req. # Convert our custom HttpResponse object back into the mod_python req.
req.content_type = response['Content-Type'] req.content_type = response['Content-Type']

View File

@ -6,7 +6,6 @@ except ImportError:
from StringIO import StringIO from StringIO import StringIO
from django import http from django import http
from django.core import signals
from django.core.handlers import base from django.core.handlers import base
from django.core.urlresolvers import set_script_prefix from django.core.urlresolvers import set_script_prefix
from django.utils import datastructures from django.utils import datastructures
@ -231,21 +230,7 @@ class WSGIHandler(base.BaseHandler):
self.initLock.release() self.initLock.release()
set_script_prefix(base.get_script_name(environ)) set_script_prefix(base.get_script_name(environ))
signals.request_started.send(sender=self.__class__) response = self.process_request(environ)
try:
try:
request = self.request_class(environ)
except UnicodeDecodeError:
response = http.HttpResponseBadRequest()
else:
response = self.get_response(request)
# Apply response middleware
for middleware_method in self._response_middleware:
response = middleware_method(request, response)
response = self.apply_response_fixes(request, response)
finally:
signals.request_finished.send(sender=self.__class__)
try: try:
status_text = STATUS_CODE_TEXT[response.status_code] status_text = STATUS_CODE_TEXT[response.status_code]