get_success_json()
函数是Django框架中一个常用的辅助函数,用于在API中响应请求成功的返回数据。其主要作用是将传入的数据字典序列化成JSON格式的http响应。
使用方法:
先在views.py
中导入如下模块
from django.http import JsonResponse
from django.views.generic import View
然后再在自定义的API视图类中定义响应成功的方法 get_success_json()
,该方法的参数应该是响应请求成功的数据。
class MyAPIView(View):
def get_success_json(self, data):
return JsonResponse({
'code': 200,
'msg': 'success',
'data': data
})
如上所示,函数会返回一个JSON响应,包含3个键值对,分别为 code
,msg
和data
。其中,data
为调用 get_success_json()
方法时传入的数据字典,msg
为固定字符串"success"
,code
输入200。
接下来,在API视图类中使用 get_success_json()
返回成功数据,示例代码如下:
class MyAPIView(View):
def get(self, request):
queryset = MyModel.objects.all()
serialized_data = MyModelSerializer(queryset, many=True).data
return self.get_success_json(serialized_data)
上面的示例中,View
类中的get()
方法返回的是成功响应的数据,使用 queryset
生成 MyModelSerializer
序列化类,并把返回的序列化对象(即serialized_data
)作为参数传入get_success_json()
方法中。
另外,下面两个实例演示了如何使用 get_success_json()
方法来响应成功请求。
第一个示例:
class MyAPIView(View):
def get_success_json(self, data):
return JsonResponse({
'code': 200,
'msg': 'success',
'data': data
})
def get(self, request, id):
queryset = MyModel.objects.filter(id=id)
serialized_data = MyModelSerializer(queryset, many=True).data
return self.get_success_json(serialized_data)
在这个示例中,应用了通过 id
获取指定的模型对象,然后序列化模型对象或模型查询集生成序列化数据,将其传递到get_success_json()
方法中处理,最后返回 JSON 数据。
第二个示例:
class MyAPIView(View):
def get_success_json(self, data):
return JsonResponse({
'code': 200,
'msg': 'success',
'data': data
})
def post(self, request):
data = request.POST
serialized_data = MySerializer(data=data)
if serialized_data.is_valid():
serialized_data.save()
return self.get_success_json(serialized_data.data)
else:
return JsonResponse({
'code': 400,
'msg': 'invalid data',
'errors': serialized_data.errors
})
在这个实例中,当使用POST方法向服务器发送数据时,程序首先根据请求中的数据,调用MySerializer对数据进行验证。如果验证成功,数据将存储到数据库中。如果请求中的数据验证失败,就会返回400错误码与错误信息。如果数据验证成功,则调用get_success_json()
方法对序列化的数据进行处理,最终返回JSON格式的成功数据响应。