Django中如何获取GET请求内所有参数及其对应值
Django获取GET请求查询参数的最优实现方案
首先明确:Django中GET请求携带的查询参数全部存储在request.GET对象中,这是Django封装的QueryDict类实例,支持类字典的所有操作,适配单值/多值参数场景,是官方推荐的获取方式。不要用request.data获取GET参数,后者仅用于读取请求体中的数据(对应POST/PUT/PATCH等请求)。
常用操作方式
1. 单独获取指定参数
对于你示例中的单值参数,直接调用get()方法即可,支持设置默认值避免参数不存在抛出KeyError异常:
# 格式:request.GET.get('参数名', 缺省默认值) name = request.GET.get('_name', '') last_name = request.GET.get('_last_name', '') favorite_food = request.GET.get('_favorite_food', '')
如果遇到同参数名传多个值的场景(如?tag=python&tag=django),使用getlist()方法获取全部值:
tags = request.GET.getlist('tag', [])
2. 批量获取所有参数
如果需要遍历输出所有参数的键值对,可直接将QueryDict转为普通字典后操作:
# 转为普通字典存储所有参数键值对 all_get_params = dict(request.GET) # 遍历打印所有参数 for param_key, param_value in all_get_params.items(): print(f"参数名:{param_key},参数值:{param_value}")
注意事项
request.GET默认是不可修改的对象,如需修改参数请先调用request.GET.copy()拿到可编辑的副本再操作- 所有参数获取后建议做合法性校验,避免恶意参数导致业务异常
内容的提问来源于stack exchange,提问作者Jake Mulhern
相关产品推荐
相关产品推荐

