Bird
Raised Fist0
Djangoframework~10 mins

Why views handle request logic in Django - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a Django view that returns a simple HTTP response.

Django
from django.http import HttpResponse

def my_view(request):
    return [1]("Hello, world!")
Drag options to blanks, or click blank then click option'
Aredirect
Brender
CHttpResponse
DJsonResponse
Attempts:
3 left
💡 Hint
Common Mistakes
Using render without a template
Returning a redirect instead of a response
Using JsonResponse for plain text
2fill in blank
medium

Complete the code to access the HTTP method used in the request inside a Django view.

Django
def check_method(request):
    if request.[1] == 'POST':
        return HttpResponse('Posted!')
    else:
        return HttpResponse('Not a POST')
Drag options to blanks, or click blank then click option'
Abody
BGET
Cpath
Dmethod
Attempts:
3 left
💡 Hint
Common Mistakes
Using request.GET instead of request.method
Trying to access request.body for method
Using uppercase 'Method'
3fill in blank
hard

Fix the error in the view to correctly get a query parameter named 'name' from the request.

Django
def greet(request):
    name = request.[1].get('name', 'Guest')
    return HttpResponse(f"Hello, {name}!")
Drag options to blanks, or click blank then click option'
APOST
BGET
Cparams
Dbody
Attempts:
3 left
💡 Hint
Common Mistakes
Using request.POST for query parameters
Trying to access request.body as a dict
Using request.params which does not exist
4fill in blank
hard

Fill both blanks to create a view that renders a template with context data.

Django
from django.shortcuts import [1]

def home(request):
    context = {'title': 'Welcome'}
    return [2](request, 'home.html', context)
Drag options to blanks, or click blank then click option'
Arender
BHttpResponse
Credirect
Dget_object_or_404
Attempts:
3 left
💡 Hint
Common Mistakes
Importing render but returning HttpResponse
Using redirect instead of render
Using get_object_or_404 which is for database queries
5fill in blank
hard

Fill all three blanks to create a view that handles POST data and redirects after processing.

Django
from django.shortcuts import [1], [2]

def submit(request):
    if request.method == 'POST':
        data = request.POST.get('[3]')
        # process data here
        return redirect('success')
    return render(request, 'submit.html')
Drag options to blanks, or click blank then click option'
Arender
Bredirect
Cdata
DHttpResponse
Attempts:
3 left
💡 Hint
Common Mistakes
Not importing redirect
Using HttpResponse instead of redirect
Using wrong POST key name

Practice

(1/5)
1. Why do Django views handle request logic instead of templates?
easy
A. Because templates are only for styling the page
B. Because views process data and decide what response to send
C. Because views store the database records
D. Because templates handle user authentication

Solution

  1. Step 1: Understand the role of views

    Views receive the user's request and decide what to do with it, like fetching data or processing input.
  2. Step 2: Understand the role of templates

    Templates only display the data and do not contain logic to process requests.
  3. Final Answer:

    Because views process data and decide what response to send -> Option B
  4. Quick Check:

    Views handle logic [OK]
Hint: Remember: views handle logic, templates handle display [OK]
Common Mistakes:
  • Thinking templates handle data processing
  • Confusing views with database models
  • Believing templates manage user authentication
2. Which of the following is the correct way to define a Django view function that handles a request?
easy
A. def my_view(request, response): return 'Hello'
B. def my_view(): return HttpResponse('Hello')
C. def my_view(request): print('Hello')
D. def my_view(request): return HttpResponse('Hello')

Solution

  1. Step 1: Check function parameters

    A Django view must accept at least one parameter named 'request' representing the user's request.
  2. Step 2: Check return type

    The view should return an HttpResponse object or similar, not just print or return a string.
  3. Final Answer:

    def my_view(request): return HttpResponse('Hello') -> Option D
  4. Quick Check:

    View(request) returns HttpResponse [OK]
Hint: View functions always take 'request' and return HttpResponse [OK]
Common Mistakes:
  • Omitting the request parameter
  • Returning plain strings instead of HttpResponse
  • Adding extra parameters not handled by Django
3. Given this view code:
from django.http import HttpResponse

def greet(request):
    name = request.GET.get('name', 'Guest')
    return HttpResponse(f'Hello, {name}!')

What will be the response if the user visits /greet?name=Anna?
medium
A. Hello, Anna!
B. Hello, Guest!
C. Hello, None!
D. Error: name parameter missing

Solution

  1. Step 1: Understand request.GET.get usage

    The code tries to get the 'name' parameter from the URL query string; if missing, it uses 'Guest'.
  2. Step 2: Check the URL query parameter

    The URL has '?name=Anna', so 'name' is 'Anna', not missing.
  3. Final Answer:

    Hello, Anna! -> Option A
  4. Quick Check:

    Query param 'name' = Anna [OK]
Hint: Check URL query parameters and default values [OK]
Common Mistakes:
  • Assuming default is always used
  • Confusing GET with POST data
  • Expecting an error if parameter is missing
4. This view code has an error:
def show(request):
    user = request.POST['username']
    return HttpResponse(f'User: {user}')

What is the likely error when a GET request is made to this view?
medium
A. KeyError because 'username' is missing in POST data
B. SyntaxError due to missing colon
C. TypeError because request.POST is not a dictionary
D. No error, returns empty user

Solution

  1. Step 1: Understand request.POST usage

    request.POST contains data only for POST requests; a GET request has no POST data.
  2. Step 2: Accessing missing key causes error

    Accessing request.POST['username'] when missing raises KeyError.
  3. Final Answer:

    KeyError because 'username' is missing in POST data -> Option A
  4. Quick Check:

    Missing POST key causes KeyError [OK]
Hint: Access POST keys safely or check request method first [OK]
Common Mistakes:
  • Assuming POST data exists on GET requests
  • Expecting empty string instead of error
  • Confusing KeyError with SyntaxError
5. You want a view to handle both GET and POST requests differently. Which code correctly handles this logic?
hard
A. def my_view(request): if request.GET: return HttpResponse('Posted') else: return HttpResponse('Got')
B. def my_view(request): if request.POST: return HttpResponse('Posted') else: return HttpResponse('Got')
C. def my_view(request): if request.method == 'POST': return HttpResponse('Posted') else: return HttpResponse('Got')
D. def my_view(request): if request.method == 'GET': return HttpResponse('Posted') else: return HttpResponse('Got')

Solution

  1. Step 1: Check how to detect request method

    Use request.method to check if the request is 'POST' or 'GET'.
  2. Step 2: Verify correct branching

    def my_view(request): if request.method == 'POST': return HttpResponse('Posted') else: return HttpResponse('Got') correctly returns 'Posted' for POST and 'Got' for others (like GET).
  3. Final Answer:

    def my_view(request): if request.method == 'POST': return HttpResponse('Posted') else: return HttpResponse('Got') -> Option C
  4. Quick Check:

    Use request.method to branch logic [OK]
Hint: Check request.method string, not request.POST or GET dict [OK]
Common Mistakes:
  • Checking if request.POST or request.GET is truthy instead of method
  • Mixing up GET and POST conditions
  • Returning wrong response for request types
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard