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

在Django中如何通过AJAX点击事件从数据库查询关联值并展示到前端

问题修复方案

你的代码存在后端返回值不符合规范、前端展示逻辑错误两类问题,以下是逐段修正方案:


1. 后端views.py修复

原代码直接返回QuerySet对象不符合Django视图要求,且没有做JSON序列化适配前端的dataType: 'json'配置,修正后代码如下:

from django.http import JsonResponse

# vendor_name_find_ajax
def find_vendorname(request):
    if request.is_ajax():
        vendorid = request.GET.get('vendor_id', None)
        # 过滤后取第一个匹配的用户,不存在则返回None
        user = CustomUser.objects.filter(first_name=vendorid).first()
        # 构造结构化返回数据
        if user:
            # 此处的username替换为你实际要返回的关联名称字段即可
            res = {"code": 200, "vendor_name": user.username}
        else:
            res = {"code": 404, "msg": "未查询到对应供应商"}
        return JsonResponse(res)

如果你使用的是Django4.0及以上版本,request.is_ajax()方法已被废弃,可以替换为判断请求头request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'


2. 前端JS逻辑修复

原代码中show()方法仅用于控制元素显隐,不能直接传入数据作为展示内容,需要先填充内容再控制显隐,修正后代码如下:

$("#vendor_id_search").click(function (event) {
    event.preventDefault();
    var vendor_id = $("#id_vendorid").val();
    // 非空校验可选添加
    if (!vendor_id.trim()) {
        $("#show_vendorname").text("请先输入vendorid").show();
        return;
    }
    $.ajax({
        url: '/ajax/find_vendorname/',
        method: 'GET',
        data: {
          'vendor_id': vendor_id
        },
        dataType: 'json',
        success: function (data) {
            if (data.code === 200) {
                // 先填充内容再显示元素
                $("#show_vendorname").text("关联供应商名称:" + data.vendor_name).show();
            } else {
                $("#show_vendorname").text(data.msg).show();
            }
        },
        // 新增异常捕获逻辑
        error: function () {
            $("#show_vendorname").text("请求异常,请检查路由配置").show();
        }
    });
});

3. 路由校验

确保你项目的urls.py中已经配置了/ajax/find_vendorname/路径和find_vendorname视图的映射关系,否则会出现404错误。

内容的提问来源于stack exchange,提问作者user17408361

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:54:05