Джанго Пэт Не Увольняет AJAX Успех - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть Django REST APIView, который берет POST и исправляет объект:

class TicketDetail(APIView):
    """
    Retrieve, update or delete a snippet instance.
    """
    queryset = models.Ticket.objects.all()
    renderer_classes = [TemplateHTMLRenderer]
    template_name='ticket.html'


    def get_object(self, pk):
        try: 
            return models.Ticket.objects.get(pk=pk)
        except models.Ticket.DoesNotExist:
            raise Http404

    def get(self, request, pk, format=None):
        ticket = self.get_object(pk)
        serializer = serializers.TicketSerializer(ticket)
        return Response({'ticket':ticket})  


    def put(self, request, pk, format=None):        
        ticket = self.get_object(pk)
        serializer = serializers.TicketSerializer(ticket, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response(request.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def post(self, request, pk, format=None):       
        ticket = self.get_object(pk)
        serializer = serializers.TicketSerializer(ticket, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response({'Success':'Success'}, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Метод POST вызывается с помощью представления JQuery AJAX:

		$('#change-status').submit(function(e) {
			e.preventDefault();
			var status = $('select[name="status"]').val();
			console.log('working');
			console.log(status);
			$.ajax({
		     dataType:'json',
			 type: "POST",
			 url: '/core/group/ticket/{{ ticket.id }}/',
			 data: {
				 'csrfmiddlewaretoken':'{{ csrf_token }}', 
				 'status':status,
				 },
			 success: function() {
				  alert('Yeah!');
			 }
			});
		});

Запрос POST работает, и объект обновляется, но функция успеха AJAX не вызывается.

Я попытался изменить ответ из стандартного ответа (request.data), ответа (request.data, status = HTTP_200_OK) и как показано в приведенном выше коде.

Я не могу понять, почему функция успеха не срабатывает.

У кого-нибудь есть какие-либо указания, которые могут указать мне правильное направление?

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2018

Понял!

Проблема заключалась в том, что мне пришлось включить JSONRenderer в список APIView renderer_classes, чтобы получить ответ не в формате HTML.

class TicketDetail(APIView):
    """
    Retrieve, update or delete a snippet instance.
    """
    queryset = models.Ticket.objects.all()
    renderer_classes = [TemplateHTMLRenderer, JSONRenderer]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...