Возможно ли прослушивать конечную точку Rest API, используя каналы django?
Целью является отправка сериализованных данных созданного объекта метода POST! Запрос будет исходить от Android/IOS приложения, созданного с помощью Flutter/Dart
Я пытаюсь использовать Django Channels Rest Framework. Но я не уверен, будет ли это работать или нет!
Приложение Flutter запрашивает этот API.
class CreateUserLocation(APIView):
"""
POST http://127.0.0.1:4000/api/addresses/v1/create-location
"""
authentication_classes = [authentication.TokenAuthentication]
permission_classes = [permissions.IsAuthenticated]
schema = None
def post(self, request):
data = request.data
if data:
try:
user = request.user
data['user'] = user.pk
serializer = UserLocationSerializer(data=data)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response({"success": True, "code": StatusCode.STATUS_0_CODE, "results": serializer.data})
return Response(serializer.errors)
except Exception as e:
return Response({"success": False, "code": StatusCode.STATUS_3_CODE, "error": e.args})
return Response({"success": False, "code": StatusCode.STATUS_3_CODE, "message": StatusCode.STATUS_3_MSG})
И мне нужно передать данные ответа следующего API в шаблон этого проекта.
class RetrieveUserLocation(generics.RetrieveAPIView):
authentication_classes = [authentication.TokenAuthentication]
permission_classes = [permissions.IsAuthenticated]
serializer_class = UserLocationDetailSerializer
retrieve_codes = {"success": StatusCode.STATUS_0_CODE, "error": StatusCode.STATUS_4_CODE, "message": ""}
lookup_field = "pk"
schema = None
def get_object(self):
try:
return UserLocation.objects.get(pk=self.kwargs["pk"])
except UserLocation.DoesNotExist:
raise Http404('No %s matches the given query.' % self.kwargs["pk"])
def retrieve(self, request, *args, **kwargs):
try:
queryset = self.get_object()
serializer = self.get_serializer(queryset)
return Response({
"success": True, "code": StatusCode.STATUS_0_CODE,
"message": StatusCode.STATUS_0_MSG, "data": serializer.data})
except Exception as e:
return Response({
"success": False, "code": StatusCode.STATUS_4_CODE,
"message": StatusCode.STATUS_4_MSG % self.kwargs['pk'], "error": e.args})