Django uses request and response objects to pass state through the system. These are part of the http request and response cycle. A client makes an http request, the server creates an http response.

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.

HttpRequest

The most important attributes are the GET and POST attributes. These are dictionaries containing all the information in the request. See QueryDict for more info.

AttributeDescription
HttpRequest.schemehttps or http
HttpRequest.paththe url that was requested
HttpRequest.METHODPOST or GET
HttpRequest.FILESA dict containing all files in a POST request
HttpRequest.METAlength, type, hostname, sourceIP, destinationIP etc.
HttpRequest.userYou can check if the user is authenticated or not

QueryDict

These objects are immutable.

request_data = HttpRequest.POST
 
name = request_data.get('name')
age = request_data.get('age')

HttpResponse

In contrast to HttpRequest objects, which are created automatically by Django, HttpResponse objects are your responsibility. Each view you write is responsible for instantiating, populating, and returning an HttpResponse.

These are normally generated by rendering a template with a context.

See Also