#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’), вместо того, чтобы отправлять запрос внутри другого запроса (тем более, если оба принадлежат одному приложению или проекту, я не знаю, ваш ли это случай).