Как преобразовать JSON, полученный из существующего URL, для просмотра в REST Framework с использованием ответа

#django #django-rest-framework

#django #django-rest-framework

Вопрос:

Я хочу получать JSON из определенного URL-адреса, отображаемого в View, используя Django Rest Framework. Комбинированный просмотр из CarViewSet и внешнего json. Вы можете видеть в моем коде, что я хочу использовать JSON из director_detail = requests.get('http://192.168.10.1/BASIC/GetEmployees/' direct_id) в сочетании с 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())
  

Заранее благодарю.

Комментарии:

1. вы пытаетесь объединить data и director_detail.json() в единый объект?

Ответ №1:

Если вашим средством визуализации по умолчанию является ‘JSONRenderer’ (документация здесь), одним из возможных решений может быть объединение data и director_detail.json() в один json. Поскольку это то, что передается в качестве параметра в Response().

Кроме того, вероятно, было бы лучше абстрагировать функциональность get в конечной точке ‘GetEmployees’ в функцию и использовать эту функцию на обоих сайтах (‘GetEmployees’ и ‘CarViewSet’), вместо того, чтобы отправлять запрос внутри другого запроса (тем более, если оба принадлежат одному приложению или проекту, я не знаю, ваш ли это случай).