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

如何在Django Rest Framework中实现字典数据传递

Django REST Framework 实现同Django字典传数据到前端的方法

你在原生Django中通过context字典存数据、render传递给模板的逻辑,在DRF里对应为将数据处理为可序列化格式后通过Response返回给前端,前端可以直接读取JSON结构里的对应字段,和模板调用context字段逻辑一致,常见实现方式有两种:


方案1:直接返回自定义字典(适合简单场景)

不需要定义序列化器,直接和原生Django一样构造数据字典,通过DRF的Response返回即可,DRF会自动将字典转换为JSON格式:

# 先导入依赖
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Book

@api_view(['GET'])
def book_list_view(request):
    # 构造数据字典,和原生Django的context写法完全一致
    context = {
        "status": "success",
        "total": 120,
        # 模型查询结果可以用values()转成字典格式
        "book_list": list(Book.objects.all().values("id", "name", "price", "publish_time"))
    }
    # 直接返回字典即可
    return Response(context)

方案2:通过序列化器返回(适合复杂/正式项目,官方推荐)

如果有数据校验、复杂字段处理的需求,用DRF自带的序列化器做数据格式化会更规范:

  • 第一步:在APP目录下新建serializers.py定义序列化规则:
from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        # 定义需要返回给前端的字段
        fields = ["id", "name", "price", "publish_time"]
  • 第二步:在视图中调用序列化器处理数据,返回结果:
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Book
from .serializers import BookSerializer

@api_view(['GET'])
def book_list_view(request):
    # 查询数据
    books = Book.objects.all()
    # 序列化数据,many=True表示处理多条数据
    serializer = BookSerializer(books, many=True)
    # 同样可以自定义外层的字典结构
    res_data = {
        "code": 200,
        "msg": "查询成功",
        "data": serializer.data
    }
    return Response(res_data)

两种方案返回的结果都是标准JSON格式,前端直接读取对应字段即可,和原生Django模板调用context对象的逻辑一致。


内容的提问来源于stack exchange,提问作者Sohanur Rahman Shanto 16209570

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:39:05