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()
|
||||
return self._raw_post_data
|
||||
|
||||
def _get_method(self):
|
||||
return self.META['REQUEST_METHOD'].upper()
|
||||
|
||||
GET = property(_get_get, _set_get)
|
||||
POST = property(_get_post, _set_post)
|
||||
COOKIES = property(_get_cookies, _set_cookies)
|
||||
|
@ -105,6 +108,7 @@ class ModPythonRequest(http.HttpRequest):
|
|||
META = property(_get_meta)
|
||||
REQUEST = property(_get_request)
|
||||
raw_post_data = property(_get_raw_post_data)
|
||||
method = property(_get_method)
|
||||
|
||||
class ModPythonHandler(BaseHandler):
|
||||
def __call__(self, req):
|
||||
|
|
|
@ -55,6 +55,7 @@ class WSGIRequest(http.HttpRequest):
|
|||
self.environ = environ
|
||||
self.path = environ['PATH_INFO']
|
||||
self.META = environ
|
||||
self.method = environ['REQUEST_METHOD'].upper()
|
||||
|
||||
def __repr__(self):
|
||||
from pprint import pformat
|
||||
|
|
|
@ -12,11 +12,12 @@ except ImportError:
|
|||
class Http404(Exception):
|
||||
pass
|
||||
|
||||
class HttpRequest(object): # needs to be new-style class because subclasses define "property"s
|
||||
class HttpRequest(object):
|
||||
"A basic HTTP request"
|
||||
def __init__(self):
|
||||
self.GET, self.POST, self.COOKIES, self.META, self.FILES = {}, {}, {}, {}, {}
|
||||
self.path = ''
|
||||
self.method = None
|
||||
|
||||
def __repr__(self):
|
||||
return '<HttpRequest\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' % \
|
||||
|
@ -282,7 +283,7 @@ class HttpResponseServerError(HttpResponse):
|
|||
self.status_code = 500
|
||||
|
||||
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', '')
|
||||
if not 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/"``
|
||||
|
||||
``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``
|
||||
A dictionary-like object containing all given HTTP GET parameters. See the
|
||||
``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
|
||||
``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``.
|
||||
|
||||
``REQUEST``
|
||||
|
|
Loading…
Reference in New Issue