Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added 'method' attribute to HttpRequest objects

git-svn-id: http://code.djangoproject.com/svn/django/trunk@3164 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 136752ca9a87be908f9ec1e398bbd56b0c75222c 1 parent a09682f
@adrianholovaty adrianholovaty authored
View
4 django/core/handlers/modpython.py
@@ -98,6 +98,9 @@ def _get_raw_post_data(self):
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 @@ def _get_raw_post_data(self):
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):
View
1  django/core/handlers/wsgi.py
@@ -55,6 +55,7 @@ def __init__(self, environ):
self.environ = environ
self.path = environ['PATH_INFO']
self.META = environ
+ self.method = environ['REQUEST_METHOD'].upper()
def __repr__(self):
from pprint import pformat
View
5 django/http/__init__.py
@@ -12,11 +12,12 @@
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 @@ def __init__(self, *args, **kwargs):
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', '')
View
14 docs/request_response.txt
@@ -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``
Please sign in to comment.
Something went wrong with that request. Please try again.