Performance: Accessing query parameters
This affects the server response time and how quickly the page can start rendering by efficiently handling URL query parameters.
from flask import request @app.route('/search') def search(): search_term = request.args.get('q', '') return f"Search term: {search_term}"
from flask import request @app.route('/search') def search(): # Manually parse query string query_string = request.environ.get('QUERY_STRING', '') params = dict(param.split('=') for param in query_string.split('&') if '=' in param) search_term = params.get('q', '') return f"Search term: {search_term}"
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Manual query string parsing | 0 | 0 | 0 | [X] Bad |
| Using request.args.get() | 0 | 0 | 0 | [OK] Good |
user from the URL?request object holds incoming request data, including query parameters in args.request.args.get('user') safely retrieves the value of the user parameter or returns None if missing.args.get() for query parameters [OK]page with a default value of 1 in Flask?get() method accepts a default keyword argument to provide a fallback value if the parameter is missing.request.args.get('page', default=1) correctly sets 1 as default. Passing 1 as second positional argument is invalid./search?term=flask?
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
term = request.args.get('term', 'none')
return f"Search term: {term}"?term=flask, so the query parameter term has value 'flask'.request.args.get('term', 'none') returns 'flask' because the parameter exists.id:
from flask import Flask, request
app = Flask(__name__)
@app.route('/item')
def item():
id = request.args['id']
return f"Item ID: {id}"request.args['id'] accesses the parameter directly and raises KeyError if missing.request.args.get('id') avoids error by returning None if missing./filter that reads two optional query parameters: category (default 'all') and limit (default 10, integer). Which code correctly handles both parameters safely?request.args.get('category', default='all') safely returns 'all' if missing.request.args.get('limit', default=10) returns string or int 10; wrapping with int() converts string to integer safely.Pass the test and this pattern moves unknown