Request & Response Objects
Every Django view receives an HttpRequest object containing all information about the incoming request — method, headers, body, user, cookies. Views must return an HttpResponse object. Understanding these objects is essential for handling web interactions.
15 min•By Priygop Team•Updated 2026
Request Object Properties
- request.method — 'GET', 'POST', 'PUT', 'DELETE'
- request.GET — QueryDict of URL query parameters
- request.POST — QueryDict of form POST data
- request.body — Raw request body (bytes)
- request.user — The authenticated user (or AnonymousUser)
- request.session — Session dictionary
- request.COOKIES — Dictionary of cookies
- request.META — HTTP headers (HTTP_HOST, CONTENT_TYPE, etc.)
- request.FILES — Uploaded files dictionary
- request.path — The URL path (e.g., '/blog/42/')
Request & Response
Request & Response
# blog/views.py
# from django.http import HttpResponse, JsonResponse, Http404
# Accessing request data
# def example_view(request):
# # Request method
# method = request.method # 'GET' or 'POST'
#
# # Query parameters: /search/?q=django&page=1
# query = request.GET.get('q', '')
# page = request.GET.get('page', 1)
#
# # POST data (from forms)
# if request.method == 'POST':
# title = request.POST.get('title')
#
# # Current user
# user = request.user
# is_logged_in = request.user.is_authenticated
#
# # Response types
# return HttpResponse('Hello', status=200)
# # return JsonResponse({'key': 'value'})
# # return HttpResponse(status=404)
# # return HttpResponse('Created', status=201)Tip
Tip
Use Q objects for complex OR queries: Post.objects.filter(Q(title__contains='django') | Q(content__contains='django')).
Diagram
Loading diagram…
QuerySets are LAZY — no DB hit until evaluated.
Common Mistake
Warning
Python filtering on QuerySets instead of database filtering. for p in all() if p.published is slower than .filter(published=True).
Practice Task
Note
(1) Use Q objects for OR queries. (2) Use F() for field comparisons. (3) Aggregate with Count, Avg, Sum.
Quick Quiz
Key Takeaways
- Every Django view receives an HttpRequest object containing all information about the incoming request — method, headers, body, user, cookies.
- request.method — 'GET', 'POST', 'PUT', 'DELETE'
- request.GET — QueryDict of URL query parameters
- request.POST — QueryDict of form POST data