You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:36:51