0
0
DjangoHow-ToBeginner · 3 min read

How to Use Query Parameters in Django: Simple Guide

In Django, you access query parameters using request.GET, which is a dictionary-like object containing all URL query parameters. You can retrieve a specific parameter by its key, for example, request.GET.get('param_name').
📐

Syntax

Use request.GET in your Django view to access query parameters from the URL. It behaves like a dictionary where keys are parameter names and values are parameter values.

  • request.GET.get('key'): Returns the value for 'key' or None if not present.
  • request.GET['key']: Returns the value for 'key' but raises KeyError if missing.
  • request.GET.getlist('key'): Returns a list of values if the parameter appears multiple times.
python
def my_view(request):
    param_value = request.GET.get('param_name')  # Safe way to get a query parameter
    all_values = request.GET.getlist('param_name')  # Get all values if repeated
    return HttpResponse(f"Value: {param_value}")
💻

Example

This example shows a Django view that reads a query parameter named name from the URL and returns a greeting message. If the parameter is missing, it uses a default greeting.

python
from django.http import HttpResponse

def greet(request):
    name = request.GET.get('name', 'Guest')  # Default to 'Guest' if no name provided
    return HttpResponse(f"Hello, {name}!")
Output
If URL is /greet?name=Alice, output: Hello, Alice! If URL is /greet, output: Hello, Guest!
⚠️

Common Pitfalls

Common mistakes when using query parameters include:

  • Using request.GET['key'] without checking if the key exists, which can cause errors.
  • Not handling multiple values for the same parameter, which requires getlist().
  • Assuming query parameters are always strings; you may need to convert them to the correct type.
python
from django.http import HttpResponse

def wrong_view(request):
    # This will raise KeyError if 'age' is missing
    age = request.GET['age']
    return HttpResponse(f"Age is {age}")


def right_view(request):
    # This safely gets 'age' or returns 'unknown'
    age = request.GET.get('age', 'unknown')
    return HttpResponse(f"Age is {age}")
📊

Quick Reference

MethodDescriptionExample
request.GET.get('key')Get value for 'key' or None if missingrequest.GET.get('page')
request.GET.get('key', default)Get value or default if missingrequest.GET.get('page', '1')
request.GET['key']Get value for 'key', raises error if missingrequest.GET['page']
request.GET.getlist('key')Get list of all values for repeated keysrequest.GET.getlist('tag')

Key Takeaways

Use request.GET.get('param') to safely access query parameters in Django views.
Handle missing parameters by providing a default value with get().
Use getlist() to retrieve multiple values for the same query parameter.
Avoid using request.GET['param'] without checking existence to prevent errors.
Remember query parameters are strings; convert them as needed for your logic.