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

如何在JavaScript中处理Django返回的序列化数据开发前端

解决方案

你当前后端直接返回JSON序列化数据的场景,完全可以通过fetch方法发起请求获取数据,这是前后端分离开发模式的标准实现方式,和你之前用Django的render方法返回服务端渲染页面是两种不同的开发逻辑,适配不同的交互场景。

图示返回数据信息

第一步:先确认Django后端JSON返回配置正确

返回JSON数据不要用render,直接用Django内置的JsonResponse即可,示例代码:

from django.http import JsonResponse

def data_api(request):
    # 替换为你自己的业务逻辑,生成要返回的结构化数据
    result = {
        "status": 200,
        "message": "请求成功",
        "data": {"id": 1, "title": "测试内容", "tags": ["前端", "Django"]}
    }
    # 如果直接返回非字典类型(比如列表),需要加safe=False参数
    # 加json_dumps_params={'ensure_ascii':False}避免中文被转义成unicode编码
    return JsonResponse(result, json_dumps_params={'ensure_ascii':False})

如果前端页面和后端接口不在同一个域名/端口下,提前配置跨域:安装django-cors-headers包,按官方文档添加到INSTALLED_APPS和中间件里,配置允许的前端来源即可。

第二步:前端JavaScript请求、解析、渲染数据

原生fetchAPI是浏览器内置的方法,不需要额外引入第三方库就能完成请求,基础实现逻辑如下:

// 可以选择页面加载完成后自动触发请求,也可以绑定到按钮点击、搜索提交等交互时机触发
document.addEventListener('DOMContentLoaded', async () => {
    try {
        // 替换为你自己的后端接口地址
        const res = await fetch('/api/your-data-path/')
        // 先判断HTTP请求状态是否正常
        if (!res.ok) throw new Error(`请求失败,状态码:${res.status}`)
        // 调用.json()方法自动把后端返回的JSON序列化字符串解析为原生JavaScript对象,直接就能通过属性访问值
        const responseData = await res.json()

        // 以下是业务处理+页面渲染逻辑,按需修改即可
        // 示例:把返回的数据渲染到页面指定容器中
        const container = document.querySelector('#content-area')
        container.innerHTML = `
            <h3>${responseData.data.title}</h3>
            <div class="tag-list">
                ${responseData.data.tags.map(tag => `<span class="tag">${tag}</span>`).join('')}
            </div>
        `
    } catch (err) {
        // 统一错误处理:比如打印错误日志、给用户弹出加载失败提示
        console.error('数据加载异常:', err)
        alert('内容加载失败,请刷新重试')
    }
})

补充说明

  • 如果你觉得原生fetch封装度不够、处理拦截器/重复请求配置麻烦,也可以替换为axios这类第三方请求库,核心逻辑是一致的:发起异步请求 -> 解析JSON为JS对象 -> 根据数据更新DOM完成页面渲染。
  • 这种模式和你之前用render的核心区别是:render是后端在服务端把数据拼接到HTML模板里,直接返回完整的HTML页面给浏览器渲染,每次交互基本都要刷新整页;而返回JSON+前端异步拉取数据的模式,页面加载完成后不需要整页刷新,只需要局部更新数据对应的DOM区域,交互流畅度会更高,更适合复杂交互的Web应用。
  • 解析JSON数据的时候不需要手动调用JSON.parse(),fetch的.json()方法已经内置了解析逻辑,直接按照你后端返回的结构逐层访问属性即可,和你截图里展示的JSON字段一一对应即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:45:31