Коллеги кто сталкивался с необходимостью редиректа при работе с DRF! после def update(self,..) редирект идёт с методом PUT, ранее не было необходимости применить редирект при DRF, сейчас столкнулся с этим вопросом и тупик!
class PersonalBalanceViewSet(viewsets.ViewSet):
# permission_classes = [permissions.IsAuthenticated]
def retrieve(self, request, pk=None):
instance = PersonalBalance.objects.filter(user_id=self.request.user.id).get()
serialized_data = PersonalBalanceSerializer(instance).data
used_workspaces = PersonalWorkspace.objects.filter(owner_id=request.user.id).count()
used_projects = PersonalProject.objects.filter(workspace__owner_id=request.user.id).count()
serialized_data['used_workspaces'] = used_workspaces
serialized_data['used_projects'] = used_projects
return Response(serialized_data)
def update(self, request, pk=None):
personel_balans_to_edit = PersonalBalance.objects.filter(user_id=self.request.user.id).get()
plan = Plan.objects.filter(type=request.data.get('tarif')).get()
next_plan_prolongation_date=datetime.date.today() + datetime.timedelta(days=31),
if personel_balans_to_edit is None:
raise NotFound("Couldn't find an instance with specified id")
ser = PersonalBalanceSerializer(personel_balans_to_edit, data={'plan_pk':plan.pk,
'next_plan_prolongation_date':datetime.date.today()},
partial=True)
ser.is_valid(raise_exception=True)
personel_balans = ser.save()
transaction = PersonalBalanceTransaction(
personal_balance=personel_balans_to_edit,
cause = 'BUY',
workspaces_additional = 0,
projects_additional = 0,
credits = plan.initial_bonus_credits + plan.credits_per_month,
antiplagiarism_checks = plan.anti_plagiarism_checks,
).save()
return HttpResponseRedirect(redirect_to='/workspaces')
# return Response(PersonalBalanceSerializer(personel_balans).data)
на выходе
URL запроса:
localhost:1337/workspaces
Метод запроса: PUT ----- КАК СЮДА GET ДАТЬ ????
Код статуса: 405 Not Allowed
Удаленный адрес: [::1]:1337
Правило для URL перехода: same-origin