Django请求视图时报ValueError: too many values to unpack (expected 2)如何处理
错误原因
你代码的核心问题是Django视图函数必须返回HttpResponse子类实例,你直接返回了UserList的查询集(QuerySet)对象。
后续Django的点击劫持防护中间件处理响应时,会调用响应对象的get方法获取X-Frame-Options头配置,此时调用的实际是QuerySet的get方法,传入的单个字符串参数不符合QuerySet.get的参数格式要求,触发了参数解包报错。
修复方案
修改视图函数,将查询集序列化后用合法的响应对象返回,示例如下:
首先导入所需响应类:
from django.http import JsonResponse
修改后的视图代码:
def otherUserList(request): userName = request.GET.get('userName', None) # 可补充参数合法性校验 if not userName: return JsonResponse({'code': 400, 'msg': '缺少userName参数'}, status=400) qs = UserList.objects.filter(user__username=userName) # 序列化查询集为可JSON序列化的结构,按需选择返回字段 result = list(qs.values('id', 'list_name')) return JsonResponse({'code': 200, 'data': result})
内容的提问来源于stack exchange,提问作者deadant88
相关产品推荐
相关产品推荐

