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' orNoneif not present.request.GET['key']: Returns the value for 'key' but raisesKeyErrorif 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
| Method | Description | Example |
|---|---|---|
| request.GET.get('key') | Get value for 'key' or None if missing | request.GET.get('page') |
| request.GET.get('key', default) | Get value or default if missing | request.GET.get('page', '1') |
| request.GET['key'] | Get value for 'key', raises error if missing | request.GET['page'] |
| request.GET.getlist('key') | Get list of all values for repeated keys | request.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.