我想使用Django Rest Framework从View中特定URL显示接收JSON。来自CarViewSet和外部json的组合视图。您可以在我的代码中看到我希望将director_detail = requests.get('http://192.168.10.1/BASIC/GetEmployees/'+direct_id)
中的JSON与 CarViewSet
这是我的代码 View.py
from django.shortcuts import render
# Create your views here.
from rest_framework import viewsets, filters
from .models import getData
from .serializers import CarSerializer
import requests
from rest_framework.response import Response
class CarViewSet(viewsets.ModelViewSet):
queryset = getData.objects.all()
serializer_class = CarSerializer
filter_backends = (filters.SearchFilter,)
__basic_fields = ('plate_no',)
search_fields = __basic_fields
def list(self, request):
queryset = getData.objects.all()
serializer = CarSerializer(queryset, many=True)
plateno = self.request.query_params.get('plate_no', None)
if plateno is not None:
queryset = queryset.filter(plate_no=plateno)
serializer = CarSerializer(queryset, many=True)
data = serializer.data
empid= data[0]['empidlong']
requests.get('http://192.168.10.1/BASIC/GetEmployees/'+empid)
direct_id =data[0]['director_emp_id']
director_detail = requests.get('http://192.168.10.1/BASIC/GetEmployees/'+direct_id)
#director_detail.json()
return Response(data,director_detail.json())
谢谢。
答案 0 :(得分:0)
如果您的默认渲染器为“ JSONRenderer”(文档here) 一种可能的解决方案是将 data 和 director_detail.json()组合成一个json。正因为如此,它作为参数传递给Response()。
除此之外,可能最好将“ GetEmployees”端点中的get功能抽象为一个函数,然后在两个站点(“ GetEmployees”和“ CarViewSet”)中使用该函数,而不是在内部进行请求另一个请求(即使这两个请求都属于同一个应用程序或项目,甚至更多,我都不知道这是否是您的情况)。