Python 2.7 如何向我的DRF API响应值添加密钥
我的API只返回值。我相信这是我的错,但我对Python/Django的使用不是很全面。感谢您的帮助 返回的内容Python 2.7 如何向我的DRF API响应值添加密钥,python-2.7,django-rest-framework,Python 2.7,Django Rest Framework,我的API只返回值。我相信这是我的错,但我对Python/Django的使用不是很全面。感谢您的帮助 返回的内容 "This is the message" 我想要什么: { "message": "This is a message" } 我只想添加一个单词作为键 视图.py from rest_framework.response import Response from id.models import Id from rest_framework import generi
"This is the message"
我想要什么:
{
"message": "This is a message"
}
我只想添加一个单词作为键
视图.py
from rest_framework.response import Response
from id.models import Id
from rest_framework import generics
from id.serializers import IdSerializer
from django.http import Http404
from IPython import embed
class OfferView(generics.RetrieveAPIView):
serializer_class = IdSerializer
lookup_field = 'id'
def get_queryset(self):
id = self.kwargs['id']
try:
return Id.objects.filter(id=id)
except Mamo.DoesNotExist:
raise Http404
def get(self, request, *args, **kwargs):
queryset = self.get_queryset()
serializer = self.serializer_class(queryset, many=True)
try:
if serializer.data[0]['offer_id'] is not None:
result = serializer.data[0]['main_offer']
elif serializer.data[0]['offer_id'] is None:
result = serializer.data[0]['extra_offer']
else:
result = serializer.data[0]['exceptional_offer']
return Response(result)
except IndexError:
raise Http404
因此,我发现我只是返回
结果
,而不是创建JSON对象
将result={'message':serializer.data[0]…}
添加到if..else
条件中的所有变量result
,我就解决了这个问题 改变一下
注意:问题在于你将得到什么形式,你只是返回了string
,这就是问题所在。现在让我们将其转换为字典(更具体地说,REST中的JSON)
序列化程序。数据是一个字典。您可以形成一个包含所需键和值(JSON可序列化)的字典。在这里,我只是想满足需要
到
其他人也是如此
更好的方法:
只需更改以下内容(最后几行,我的意思是尝试…除了)
到下面的一个(编写相同的代码就像代码复制)
result = serializer.data[0]['exceptional_offer']
result = {"message": serializer.data[0]['exceptional_offer']}
try:
if serializer.data[0]['offer_id'] is not None:
result = serializer.data[0]['main_offer']
elif serializer.data[0]['offer_id'] is None:
result = serializer.data[0]['extra_offer']
else:
result = serializer.data[0]['exceptional_offer']
return Response(result)
except IndexError:
raise Http404
try:
if serializer.data[0]['offer_id'] is not None:
# result = serializer.data[0]['main_offer']
key = 'main_offer'
elif serializer.data[0]['offer_id'] is None:
# result = serializer.data[0]['extra_offer']
key = 'extra_offer'
else:
# result = serializer.data[0]['exceptional_offer']
key = 'exceptional_offer'
result = {'message': serializer.data[0][key]}
return Response(result)
except IndexError:
raise Http404