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

Я хочу получить 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 Ответ

0 голосов
/ 12 марта 2019

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

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

...