How to Use request.GET in Django: Simple Guide
In Django,
request.GET is a dictionary-like object that holds all the query parameters sent via the URL. You can access values by key using request.GET.get('key') to safely retrieve parameters without errors if the key is missing.Syntax
The request.GET object behaves like a dictionary containing all URL query parameters. Use request.GET.get('param') to get the value of a parameter named param. If the parameter is missing, it returns None or a default value if provided.
request.GET['param']: Access parameter directly, raises error if missing.request.GET.get('param'): Access parameter safely, returnsNoneif missing.request.GET.get('param', 'default'): Returns 'default' if parameter is missing.
python
value = request.GET.get('param') value_with_default = request.GET.get('param', 'default_value') value_direct = request.GET['param'] # Use carefully
Example
This example shows a Django view that reads a query parameter named name from the URL and returns a greeting message. If name is missing, it uses a default greeting.
python
from django.http import HttpResponse def greet(request): name = request.GET.get('name', 'Guest') 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 request.GET include:
- Using
request.GET['param']without checking if the key exists, which raises aKeyErrorif missing. - Not handling multiple values for the same key, which requires
request.GET.getlist('param'). - Assuming values are always strings; you may need to convert types explicitly.
python
def wrong_way(request): # This will raise KeyError if 'age' is missing age = request.GET['age'] def right_way(request): # This safely gets 'age' or returns 'unknown' age = request.GET.get('age', 'unknown')
Quick Reference
| Usage | Description |
|---|---|
| request.GET.get('key') | Get value for 'key' or None if missing |
| request.GET.get('key', 'default') | Get value or return 'default' if missing |
| request.GET['key'] | Get value for 'key', raises error if missing |
| request.GET.getlist('key') | Get list of all values for 'key' if repeated |
Key Takeaways
Use request.GET.get('key') to safely access query parameters without errors.
Provide a default value in get() to handle missing parameters gracefully.
Avoid using request.GET['key'] unless you are sure the parameter exists.
Use request.GET.getlist('key') to handle multiple values for the same parameter.
Remember all values from request.GET are strings; convert types as needed.