Как обработать запрос PUT в Django RestFramework - PullRequest
1 голос
/ 09 марта 2019

Я пытаюсь обновить свои данные в модели 'VoterList' с помощью API PUT, но я не знаю, какую функцию я должен использовать в моем файле 'views.py' для обработки поступающего запроса PUT, потому что в API PUT, Мы используем параметры из URL, чтобы выбрать соответствующую запись из модели для обновления, а затем обновить ее, используя данные, полученные из API PUT.

model.py

class VoterList(models.Model):
    # id = models.IntegerField(auto_created= True, primary_key=True)
    name = models.CharField( max_length=20)
    email = models.EmailField()
    mobile = models.IntegerField()
    city = models.CharField( max_length=20)
    type = models.CharField(max_length=20)

    def __str__(self):
        return self.name

serializers.py

class FillVoterListSerializers(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = VoterList
        fields = ('id','name', 'email', 'mobile', 'city', 'type')

    def update(self, instance, validated_data):
        instance.name = validated_data.pop("name", instance.name)
        instance.email = validated_data.pop("email", instance.email)
        instance.save()

        return  instance

Я сам управляю кодом для PUT в сериализаторах.

views.py

class UpdateVoter(APIView):

    serializer_class =  FillVoterListSerializers
    permission_classes = (AllowAny,)

    def post(self, request,*args,**kwargs):

        isDataExist =  VoterList.objects.get(id=request.data.get('id'))

        if not isDataExist:
            return Response({"message":"No Voter exist with this id."})
        else:
            isDataUpdated =  self.serializer_class(isDataExist, request.data, partial=True)

            if isDataUpdated.is_valid():
                isDataUpdated.save()
                return Response({"message": "Voter updated."})
            else:
                return  Response({"message": "All fields are Mandatory."})

urls.py

 urlpatterns = [
  url('api/updateVoter/(?P<id>[0-9]+)/$', UpdateVoter.as_view(), name= "updateVoter")]

Так какой код я должен написать в моем view.py для обработки запроса PUT.

Примечание. Я хочу сообщить вам, что готовлю API для мобильных приложений, поэтому, пожалуйста, ответьте соответствующим образом.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 11 марта 2019

Вы можете использовать функцию put () в вашем представлении, аналогичную записи (), которую вы использовали

def put(self, request, pk, format=None):
     # Your code here

См. Документы DRF: https://www.django -rest-framework.org / tutorial / 3-based-views-views /

...