Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Process request and process response in Django
📖 Scenario: You are building a simple Django web app that greets users by name. The app will receive a user's name from a URL and respond with a personalized greeting.
🎯 Goal: Create a Django view that processes the incoming HTTP request to get the user's name from the URL, then returns an HTTP response with a greeting message including that name.
📋 What You'll Learn
Create a Django view function named greet_user
Extract the name parameter from the URL request
Return an HttpResponse with the text 'Hello, <name>!'
Use Django's HttpResponse class for the response
💡 Why This Matters
🌍 Real World
Web applications often need to read data sent by users in requests and respond with personalized content.
💼 Career
Understanding how to process requests and send responses is fundamental for backend web developers working with Django.
Progress0 / 4 steps
1
Set up the Django view function
Create a Django view function called greet_user that takes a single parameter request.
Django
Hint
Start by defining a function named greet_user that accepts request as its argument.
2
Extract the name parameter from the request
Inside the greet_user function, get the name parameter from the URL query string using request.GET.get('name') and store it in a variable called user_name.
Django
Hint
Use request.GET.get('name') to safely get the name from the URL query parameters.
3
Create the greeting message
Still inside greet_user, create a variable called message that uses an f-string to say 'Hello, <user_name>!'.
Django
Hint
Use an f-string to insert user_name into the greeting message.
4
Return the HTTP response
Return an HttpResponse object from greet_user with the message as its content.
Django
Hint
Use return HttpResponse(message) to send the greeting back to the browser.
Practice
(1/5)
1. What does the request object in a Django view primarily contain?
easy
A. Information sent by the user, like form data and headers
B. The HTML template to render
C. The final content sent back to the user
D. Database connection details
Solution
Step 1: Understand the role of the request object
The request object holds all data sent by the user, such as form inputs, cookies, and headers.
Step 2: Differentiate request from response
The response object is what the server sends back, not the request.
Final Answer:
Information sent by the user, like form data and headers -> Option A
Quick Check:
Request = User data [OK]
Hint: Request holds user input; response sends output [OK]
Common Mistakes:
Confusing request with response
Thinking request contains templates
Assuming request holds server data
2. Which of the following is the correct way to return a simple text response in a Django view?
easy
A. return HttpResponse('Hello World')
B. return render('Hello World')
C. return JsonResponse('Hello World')
D. return redirect('Hello World')
Solution
Step 1: Identify the correct response class for text
HttpResponse is used to send plain text or HTML content back to the user.
Step 2: Check other options
render is for templates, JsonResponse for JSON data, redirect for URL redirects.
Final Answer:
return HttpResponse('Hello World') -> Option A
Quick Check:
Text response uses HttpResponse [OK]
Hint: Use HttpResponse for plain text output [OK]
Common Mistakes:
Using render without a template
Using JsonResponse for plain text
Confusing redirect with response content
3. Given this Django view code, what will be the output when accessed?
from django.http import JsonResponse
def my_view(request):
data = {'name': 'Alice', 'age': 30}
return JsonResponse(data)
medium
A. name=Alice&age=30
B. {'name': 'Alice', 'age': 30}
C. {"name": "Alice", "age": 30}
D. An error because JsonResponse needs a string
Solution
Step 1: Understand JsonResponse output format
JsonResponse converts the Python dictionary into a JSON string with double quotes.
Step 2: Check the output format
The output is a JSON string: {"name": "Alice", "age": 30} with double quotes, not Python dict syntax.
Final Answer:
{"name": "Alice", "age": 30} -> Option C
Quick Check:
JsonResponse outputs JSON string [OK]
Hint: JsonResponse outputs JSON with double quotes [OK]
A. HttpResponse cannot have status_code set manually
B. status_code must be an integer, not a string
C. Missing return statement
D. HttpResponse requires a JSON object
Solution
Step 1: Check the status_code assignment
Status codes must be integers like 404, not strings like '404'.
Step 2: Confirm HttpResponse usage
HttpResponse allows setting status_code manually but it must be int.
Final Answer:
status_code must be an integer, not a string -> Option B
Quick Check:
status_code = int, not string [OK]
Hint: status_code must be int, not string [OK]
Common Mistakes:
Using string for status_code
Thinking HttpResponse forbids status_code
Forgetting to return response
5. You want to create a Django view that processes a POST request with JSON data and returns a JSON response with a message and the original data. Which code snippet correctly handles this?
hard
A. def view(request):
data = request.GET
return JsonResponse({'message': 'Received', 'data': data})
B. def view(request):
data = request.POST
return HttpResponse({'message': 'Received', 'data': data})
C. def view(request):
data = request.body
return JsonResponse(data)
D. def view(request):
data = json.loads(request.body)
return JsonResponse({'message': 'Received', 'data': data})
Solution
Step 1: Parse JSON from POST request body
request.body contains raw bytes; json.loads converts it to a Python dict.
Step 2: Return JsonResponse with message and data
JsonResponse correctly serializes the Python dict to JSON for response.
Step 3: Check other options
def view(request):
data = request.POST
return HttpResponse({'message': 'Received', 'data': data}) wrongly uses HttpResponse with dict, def view(request):
data = request.GET
return JsonResponse({'message': 'Received', 'data': data}) uses GET instead of POST, def view(request):
data = request.body
return JsonResponse(data) returns raw bytes without parsing.
Final Answer:
def view(request):
data = json.loads(request.body)
return JsonResponse({'message': 'Received', 'data': data}) -> Option D
Quick Check:
Parse JSON body, respond with JsonResponse [OK]
Hint: Parse JSON from request.body, respond with JsonResponse [OK]