📖 Scenario: You are building a simple Django web app that greets users by their name passed in the URL query parameters.
🎯 Goal: Create a Django view function that uses the HttpRequest object to read a user's name from the query string and returns a greeting message.
📋 What You'll Learn
Create a Django view function named greet_user that accepts a request parameter
Use the request.GET dictionary to get the value of the name query parameter
Set a default name of 'Guest' if the name parameter is missing
Return an HttpResponse with the greeting message 'Hello, <name>!'
Ensure the view function handles the HttpRequest object correctly
💡 Why This Matters
🌍 Real World
Web developers often need to read user input from URLs to customize responses, such as greeting users by name or filtering content.
💼 Career
Understanding the HttpRequest object and how to extract data from it is fundamental for backend web development with Django.
Progress0 / 4 steps
1
Create the Django view function skeleton
Write a Django view function named greet_user that takes a single parameter called request.
Django
Hint
Start by defining a function with the exact name greet_user and one parameter request.
2
Extract the 'name' parameter from the HttpRequest
Inside the greet_user function, create a variable called user_name that gets the 'name' value from request.GET. Use 'Guest' as the default if 'name' is not provided.
Django
Hint
Use request.GET.get('name', 'Guest') to safely get the query parameter with a default.
3
Create the greeting message
Still inside the greet_user function, create a variable called message that uses an f-string to format the greeting: 'Hello, <user_name>!'.
Django
Hint
Use an f-string like f'Hello, {user_name}!' to create the message.
4
Return the HttpResponse with the greeting
Complete the greet_user function by returning an HttpResponse object initialized with the message variable.
Django
Hint
Use return HttpResponse(message) to send the response back to the browser.
Practice
(1/5)
1. What does the HttpRequest object in Django primarily represent?
easy
A. The database connection settings
B. Information about the user's web request
C. The HTML template to render
D. The server's response to the user
Solution
Step 1: Understand the role of HttpRequest
The HttpRequest object contains all details sent by the user when they visit a web page or submit a form.
Step 2: Differentiate from other components
It is not about database settings, templates, or responses but about the incoming request data.
Final Answer:
Information about the user's web request -> Option B
Quick Check:
HttpRequest = user request info [OK]
Hint: HttpRequest always holds data sent by the user [OK]
Common Mistakes:
Confusing HttpRequest with HttpResponse
Thinking it holds database or template info
Assuming it represents server settings
2. Which of the following is the correct way to access GET parameters from a Django HttpRequest object named request?
easy
A. request.GET['param']
B. request.POST['param']
C. request.params['param']
D. request.data['param']
Solution
Step 1: Identify how to access GET data
In Django, GET parameters are accessed via the GET dictionary attribute of the HttpRequest object.
Step 2: Confirm the correct syntax
Using request.GET['param'] retrieves the value of 'param' from the URL query string.
Final Answer:
request.GET['param'] -> Option A
Quick Check:
GET params use request.GET [OK]
Hint: Use request.GET for URL query parameters [OK]
Common Mistakes:
Using request.POST for GET parameters
Using non-existent attributes like request.params
Confusing request.data with Django HttpRequest
3. Given the following Django view code, what will be printed if the URL is /search/?q=django?
B. Using request.POST.get instead of request.GET.get
C. No error, code is correct
D. Incorrect use of f-string in HttpResponse
Solution
Step 1: Check for necessary imports
The code uses HttpResponse but does not show an import statement for it, which is required.
Step 2: Verify usage of request.POST.get and f-string
Using request.POST.get is valid for POST data, and f-string usage is correct in Python 3.6+.
Final Answer:
Missing import of HttpResponse -> Option A
Quick Check:
HttpResponse must be imported [OK]
Hint: Always import HttpResponse before using it [OK]
Common Mistakes:
Assuming request.POST.get is wrong for POST data
Thinking f-string is invalid syntax
Ignoring missing imports causing runtime errors
5. You want to check if a user sent a custom header named X-Auth-Token in a Django view. Which is the correct way to access this header from the HttpRequest object named request?
hard
A. request.headers['X-Auth-Token']
B. request.POST['X-Auth-Token']
C. request.GET['X-Auth-Token']
D. request.META['HTTP_X_AUTH_TOKEN']
Solution
Step 1: Understand how Django stores HTTP headers
Django stores HTTP headers in the request.META dictionary, with header names uppercased, prefixed by 'HTTP_', and dashes replaced by underscores.
Step 2: Convert 'X-Auth-Token' to META key
The header X-Auth-Token becomes HTTP_X_AUTH_TOKEN in request.META.
Final Answer:
request.META['HTTP_X_AUTH_TOKEN'] -> Option D
Quick Check:
Custom headers use request.META with HTTP_ prefix [OK]
Hint: Custom headers in request.META with HTTP_ prefix [OK]
Common Mistakes:
Using request.headers (added in Django 2.2 but not always reliable)
Trying to get headers from GET or POST dictionaries
Not converting header name to uppercase with HTTP_ prefix
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.