У меня есть 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) и как показано в приведенном выше коде.
Я не могу понять, почему функция успеха не срабатывает.
У кого-нибудь есть какие-либо указания, которые могут указать мне правильное направление?
Спасибо