使用Django框架验证手机号是否存在时始终返回False求助
Django手机号查询始终返回False的排查方案
核对请求参数键名
确认前端传递的参数名与后端request.POST.get('mobile_no')的键完全一致。前端可能误传为mobile、phone等名称,导致后端获取到None或空值。可临时添加打印语句验证:print("获取到的手机号:", mobile_no)匹配数据库中手机号格式
检查数据库内mobile_no字段的实际值,是否与前端传递的格式完全一致(比如是否带区号、空格、特殊符号)。例如数据库存的是+8613800138000,前端传纯数字13800138000就会匹配失败。检查模型字段类型
确保User模型中mobile_no字段使用CharField而非IntegerField。手机号可能包含前导零、区号符号,且超长数字会超出整数存储范围,用字符串类型更稳妥。直接验证数据库记录
手动执行SQL查询,确认目标手机号是否存在于对应表中:SELECT * FROM your_app_user WHERE mobile_no = '待验证的手机号';(替换
your_app_user为实际表名)排查数据库事务与路由
- 若刚添加手机号,确认事务已提交,未提交的事务无法被查询到。
- 若项目用了多数据库或分表,需确认
User模型对应的数据库/表正确。
调试代码示例
将exists()替换为first(),便于直接查看查询结果:
@csrf_exempt def forget_password(request): mobile_no = request.POST.get('mobile_no') verify_obj = models.User.objects.filter(mobile_no=mobile_no).first() print("查询结果:", verify_obj) if verify_obj: return JsonResponse({'bool':True}) else: return JsonResponse({'bool':False,'msg' : 'mobile_no does not exist!!'})
内容的提问来源于stack exchange,提问作者Bawar Rwandzy
相关产品推荐
相关产品推荐

