python Django 后端返回数据格式


def get_classroom_list(request):
    data = json.loads(request.body)
    year = data.get('year')
    obj = Classroom.objects.filter(year=year)  

    res = {
        "code": 0,
        "msg": 'OK!',
        "data": obj 
    }

    return ??????

前端访问后Django不是报错就是数据不是我想要的格式
需要Django返回这样的格式,代码怎么写呢?

 
{
    "code": 0,
    "msg": "测试获取数据成功",
    "data": [
        {
            "id": "55",
            "title": "啊啊啊",
            "classroomtype": "1",
            "kzcd": "8",
        },
        {
            "id": "11",
            "title": "阿大声道",
            "classroomtype": "1",
            "kzcd": "5",
        }
    ]
}
from django.http import JsonResponse
from django.forms.models import model_to_dict


def get_classroom_list(request):
    data = json.loads(request.body)
    year = data.get('year')
    obj = Classroom.objects.filter(year=year)
    data = []
    for i in obj:
        data.append(model_to_dict(i))
    res = {
        "code": 0,
        "msg": 'OK!',
        "data": data
    }

    return JsonResponse(res)

有帮助的话,请点采纳该答案~

data 是一个数组,数组里面每一个元素是一个字典,字典含有多个 键-值 对。
看看以下代码得到什么样的数据:

    data = json.loads(request.body)
    year = data.get('year')
    obj = Classroom.objects.filter(year=year)

需要使用JsonResponse

return JsonResponse({
 "code": 0,
    "msg": "测试获取数据成功",
    "data": [
        {
            "id": "55",
            "title": "啊啊啊",
            "classroomtype": "1",
            "kzcd": "8",
        },
        {
            "id": "11",
            "title": "阿大声道",
            "classroomtype": "1",
            "kzcd": "5",
        }
    ]
})
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7648613
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:python django 获取当前时间戳的整数格式,以及将整数格式的数字转换为时间格式
  • 除此之外, 这篇博客: python—Django面试题汇总中的 13. Django重定向你是如何实现的?用的什么状态码? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • - 使用HttpResponseRedirect 
    - redirect  和  reverse 
    - 状态码:302,301
    
  • 您还可以看一下 章秀淞老师的Python全栈之Django开发课程中的 django数据库的查询和保存小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    为了使Python Django后端返回符合需求的数据格式,可以采用以下步骤:

    1. 定义一个函数,用于返回特定格式的数据。在函数中可以采用Python内置的json库,将数据转换为json格式。
    from django.http import JsonResponse
    
    def data_view(request):
        data = {
            'name': 'Tom',
            'age': 25,
            'gender': 'male'
        }
        return JsonResponse(data)
    
    1. 在定义的函数中,可以通过request对象获取前端发送过来的数据,根据需要进行处理后再发送回前端。
    def data_view(request):
        if request.method == 'POST':
            post_data = request.POST
            # 进行数据处理
            data = {
                'result': 'success'
            }
        else:
            data = {
                'result': 'fail'
            }
        return JsonResponse(data)
    
    1. 如果需要对返回的数据进行格式化处理,可以通过对HttpResponse对象进行设置,例如设置Content-Type。
    from django.http import HttpResponse
    
    def data_view(request):
        data = {
            'name': 'Tom',
            'age': 25,
            'gender': 'male'
        }
        json_data = json.dumps(data)
        response = HttpResponse(json_data)
        response['Content-Type'] = 'application/json'
        return response
    
    1. 如果需要在返回数据时进行重定向操作,可以使用HttpResponseRedirect、redirect或reverse函数实现。
    from django.shortcuts import redirect
    from django.urls import reverse
    
    def index_view(request):
        if condition:
            return redirect('next_page')
        else:
            return redirect(reverse('prev_page'))
    

    总之,Django具有强大的数据处理能力和丰富的视图函数,开发者可以根据实际需要进行灵活的调整和设计,以返回符合自己需求的数据格式。