Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-10-21T21:07:01+08:00
====== Request and response objects ======
Created Friday 21 October 2011
===== Quick overview =====
Django uses request and response objects to pass state through the system.
When a page is requested, Django creates an **HttpRequest **object that contains //metadata //about the request. Then Django loads the appropriate **view**, passing the **HttpRequest** as the first argument to the view function. Each view is responsible for returning an **HttpResponse** object.
This document explains the APIs for HttpRequest and HttpResponse objects.
===== HttpRequest objects =====
==== class ====
HttpRequest
==== Attributes ====
All attributes except **session** should be considered //read-only.//
**HttpRequest.path**
A string representing the //full path// to the //requested page//, not including the domain.
Example: "/music/bands/the_beatles/"
**HttpRequest.path_info**
Under some Web server configurations, the portion of the URL after the host name is split up into a **script prefix portion and a path info portion** (this happens, for example, when using the **django.root** option with the modpython handler from Apache). The path_info attribute always contains the path info portion of the path, no matter what Web server is being used. Using this instead of attr:~HttpRequest.path can make your code much easier to move between test and deployment servers.
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption //django.root /mysite//
PythonDebug On
For example, if the django.root for your application is set to "/minfo", then path might be "/minfo/music/bands/the_beatles/" and path_info would be "/music/bands/the_beatles/".
HttpRequest.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()
HttpRequest.encoding
A string representing the current encoding used to decode form submission data (or None, which means the DEFAULT_CHARSET setting is used). You can write to this attribute to change the encoding used when accessing the form data. Any subsequent attribute accesses (such as reading from GET or POST) will use the new encoding value. Useful if you know the form data is not in the DEFAULT_CHARSET encoding.
HttpRequest.GET
A dictionary-like object containing all given HTTP GET parameters. See the QueryDict documentation below.
HttpRequest.POST
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, use if request.method == "POST" (see above).
Note: POST does not include file-upload information. See FILES.
HttpRequest.REQUEST
For convenience, a dictionary-like object that searches POST first, then GET. Inspired by PHP's $_REQUEST.
For example, if GET = {"name": "john"} and POST = {"age": '34'}, REQUEST["name"] would be "john", and REQUEST["age"] would be "34".
It's strongly suggested that you use GET and POST instead of REQUEST, because the former are more explicit.
HttpRequest.COOKIES
A standard Python dictionary containing all cookies. Keys and values are strings.
HttpRequest.FILES
A dictionary-like object containing all uploaded files. Each key in FILES is the name from the . Each value in FILES is an UploadedFile as described below.
See Managing files for more information.
Note that FILES will only contain data if the request method was POST and the