Added 'method' attribute to HttpRequest objects
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3164 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
a09682fd63
commit
136752ca9a
|
@ -98,6 +98,9 @@ class ModPythonRequest(http.HttpRequest):
|
||||||
self._raw_post_data = self._req.read()
|
self._raw_post_data = self._req.read()
|
||||||
return self._raw_post_data
|
return self._raw_post_data
|
||||||
|
|
||||||
|
def _get_method(self):
|
||||||
|
return self.META['REQUEST_METHOD'].upper()
|
||||||
|
|
||||||
GET = property(_get_get, _set_get)
|
GET = property(_get_get, _set_get)
|
||||||
POST = property(_get_post, _set_post)
|
POST = property(_get_post, _set_post)
|
||||||
COOKIES = property(_get_cookies, _set_cookies)
|
COOKIES = property(_get_cookies, _set_cookies)
|
||||||
|
@ -105,6 +108,7 @@ class ModPythonRequest(http.HttpRequest):
|
||||||
META = property(_get_meta)
|
META = property(_get_meta)
|
||||||
REQUEST = property(_get_request)
|
REQUEST = property(_get_request)
|
||||||
raw_post_data = property(_get_raw_post_data)
|
raw_post_data = property(_get_raw_post_data)
|
||||||
|
method = property(_get_method)
|
||||||
|
|
||||||
class ModPythonHandler(BaseHandler):
|
class ModPythonHandler(BaseHandler):
|
||||||
def __call__(self, req):
|
def __call__(self, req):
|
||||||
|
|
|
@ -55,6 +55,7 @@ class WSGIRequest(http.HttpRequest):
|
||||||
self.environ = environ
|
self.environ = environ
|
||||||
self.path = environ['PATH_INFO']
|
self.path = environ['PATH_INFO']
|
||||||
self.META = environ
|
self.META = environ
|
||||||
|
self.method = environ['REQUEST_METHOD'].upper()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
from pprint import pformat
|
from pprint import pformat
|
||||||
|
|
|
@ -12,11 +12,12 @@ except ImportError:
|
||||||
class Http404(Exception):
|
class Http404(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class HttpRequest(object): # needs to be new-style class because subclasses define "property"s
|
class HttpRequest(object):
|
||||||
"A basic HTTP request"
|
"A basic HTTP request"
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.GET, self.POST, self.COOKIES, self.META, self.FILES = {}, {}, {}, {}, {}
|
self.GET, self.POST, self.COOKIES, self.META, self.FILES = {}, {}, {}, {}, {}
|
||||||
self.path = ''
|
self.path = ''
|
||||||
|
self.method = None
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<HttpRequest\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' % \
|
return '<HttpRequest\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' % \
|
||||||
|
@ -282,7 +283,7 @@ class HttpResponseServerError(HttpResponse):
|
||||||
self.status_code = 500
|
self.status_code = 500
|
||||||
|
|
||||||
def get_host(request):
|
def get_host(request):
|
||||||
"""Gets the HTTP host from the environment or request headers."""
|
"Gets the HTTP host from the environment or request headers."
|
||||||
host = request.META.get('HTTP_X_FORWARDED_HOST', '')
|
host = request.META.get('HTTP_X_FORWARDED_HOST', '')
|
||||||
if not host:
|
if not host:
|
||||||
host = request.META.get('HTTP_HOST', '')
|
host = request.META.get('HTTP_HOST', '')
|
||||||
|
|
|
@ -29,6 +29,15 @@ All attributes except ``session`` should be considered read-only.
|
||||||
|
|
||||||
Example: ``"/music/bands/the_beatles/"``
|
Example: ``"/music/bands/the_beatles/"``
|
||||||
|
|
||||||
|
``method``
|
||||||
|
A string representing the HTTP method used in the request. This is
|
||||||
|
guaranteed to be uppercase. Example::
|
||||||
|
|
||||||
|
if request.method == 'GET':
|
||||||
|
do_something()
|
||||||
|
elif request.method == 'POST':
|
||||||
|
do_something_else()
|
||||||
|
|
||||||
``GET``
|
``GET``
|
||||||
A dictionary-like object containing all given HTTP GET parameters. See the
|
A dictionary-like object containing all given HTTP GET parameters. See the
|
||||||
``QueryDict`` documentation below.
|
``QueryDict`` documentation below.
|
||||||
|
@ -37,6 +46,11 @@ All attributes except ``session`` should be considered read-only.
|
||||||
A dictionary-like object containing all given HTTP POST parameters. See the
|
A dictionary-like object containing all given HTTP POST parameters. See the
|
||||||
``QueryDict`` documentation below.
|
``QueryDict`` documentation below.
|
||||||
|
|
||||||
|
It's possible that a request can come in via POST with an empty ``POST``
|
||||||
|
dictionary -- if, say, a form is requested via the POST HTTP method but
|
||||||
|
does not include form data. Therefore, you shouldn't use ``if request.POST``
|
||||||
|
to check for use of the POST method; instead, check `method`_.
|
||||||
|
|
||||||
Note: ``POST`` does *not* include file-upload information. See ``FILES``.
|
Note: ``POST`` does *not* include file-upload information. See ``FILES``.
|
||||||
|
|
||||||
``REQUEST``
|
``REQUEST``
|
||||||
|
|
Loading…
Reference in New Issue