Django HttpRequest
last modified January 9, 2023
Django HttpRequest tutorial shows how to work with HttpRequest object in Django.
Django
Django is a high-level Python web framework. It encourages rapid development and clean, pragmatic design. Django's primary goal is to ease the creation of complex, database-driven websites.
Django is maintained by the Django Software Foundation.
Django HttpRequest
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. These include request method, user agent, address, or
cookies.
Later Django loads the appropriate view, passing the HttpRequest as
the first argument to the view function. Each view is must return an
HttpResponse object.
Django HttpRequest example
In the following example, we create a Django application that examines the
data send in an HttpRequest object.
$ mkdir httprequest $ cd httprequest $ mkdir src $ cd src
We create the project and the and src directories.
Then we locate to the src directory.
$ django-admin startproject httprequest .
We create a new Django project in the src directory.
$ cd .. $ pwd /c/Users/Jano/Documents/pyprogs/django/httprequest
We locate to the project directory.
$ tree /f
src
│ db.sqlite3
│ manage.py
│
└───httprequest
settings.py
urls.py
views.py
wsgi.py
__init__.py
These are the contents of the project directory.
Note: The Django way is to put functionality into
apps, which are created with django-admin startapp.
In this tutorial, we do not use an app to make the example simpler.
We focus on demonstrating how to examine the HttpRequest.
from django.contrib import admin
from django.urls import path
from .views import data
urlpatterns = [
path('admin/', admin.site.urls),
path('data/', data, name='data'),
]
We add a new data/ path; it calls the data
function from the views.py module.
from django.http import HttpResponse
def data(request):
path = request.path
scheme = request.scheme
method = request.method
address = request.META['REMOTE_ADDR']
user_agent = request.META['HTTP_USER_AGENT']
msg = f'''
<html>
Path: {path}<br>
Scheme: {scheme}<br>
Method: {method}<br>
Address: {address}<br>
User agent: {user_agent}<br>
</html>
'''
return HttpResponse(msg, content_type='text/html', charset='utf-8')
Inside data, we get the request's path, scheme, method,
address, and user agent. We return it in an HttpResponse.
Note: For this simple example, we have manually built the HTML string. HTML response is normally created with a template system; Django uses Jinja.
$ python manage.py runserver
We run the server and navigate to http://127.0.0.1:8000/data/.
In this article, we have demonstrated how to send work with
HttpRequest object in Django.