Beginner-Friendly Topic
Take your time - it's perfectly normal to re-read this topic 2-3 times. Try the interactive code editor below to run code yourself. Use the Q&A section to check your understanding before moving on. You've got this! 🚀
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.
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
# 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')).
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