Django视图返回JSON对象后,JS如何提取first_name字段?
问题解决步骤
1. 修正Django视图代码
当前视图直接返回QuerySet对象转成的HttpResponse,并非标准JSON格式,导致前端无法直接解析为JS对象。需要改用JsonResponse返回规范的JSON数据,同时确保获取到单个用户的信息:
from django.http import JsonResponse def findnamesurname(request): username = request.POST['username'] # 按username获取单个用户(假设username是唯一字段) user = Users.objects.get(username=username) # 返回包含目标字段的JSON return JsonResponse({ 'first_name': user.first_name, 'last_name': user.last_name })
如果需要用values方法筛选字段,可这样写:
from django.http import JsonResponse def findnamesurname(request): username = request.POST['username'] # 过滤后取第一个结果,返回字典格式数据 user_data = Users.objects.filter(username=username).values('first_name', 'last_name').first() return JsonResponse(user_data)
2. 修正前端JS代码
指定请求的响应类型为JSON,jQuery会自动将响应解析为JS对象,直接通过.访问first_name字段即可:
$.ajax({ url: "/findnamesurname", method: "POST", data: { 'csrfmiddlewaretoken': '{{csrf_token}}', "username": data, }, // 明确响应数据类型为JSON dataType: 'json', success: function (response) { // 将first_name存入变量 const firstName = response.first_name; // 可根据需求替换为其他业务操作 alert(firstName); } })
问题根源说明
你当前alert显示的是Python字典格式的字符串({'first_name': 'hello', 'last_name': 'there'}),这是因为Django直接把QuerySet转成字符串返回,并非标准JSON(标准JSON的键需用双引号)。改用JsonResponse后,返回的是规范JSON格式,前端可直接解析为对象,就能通过.访问属性。
内容的提问来源于stack exchange,提问作者swatch360
相关产品推荐
相关产品推荐

