Python 数据不存在';发送PUT方法后不更改

Python 数据不存在';发送PUT方法后不更改,python,django,Python,Django,我正在用PythonDjango做一些基本的CRUD应用程序。基本上,从前端,我想发送一些原始文本数据,后端将捕获它,并重新发送清理后的数据。 目前,clean方法仍然有效,但出于某种原因,它仍然将相同的原始文本发送到前端 这是我的代码: 在models.py中: class Post(models.Model): content = models.TextField(max_length=3000, blank=False, default='') 在serializers.py中:

我正在用PythonDjango做一些基本的CRUD应用程序。基本上,从前端,我想发送一些原始文本数据,后端将捕获它,并重新发送清理后的数据。 目前,clean方法仍然有效,但出于某种原因,它仍然将相同的原始文本发送到前端

这是我的代码:

在models.py中:

class Post(models.Model):
    content = models.TextField(max_length=3000, blank=False, default='')
在serializers.py中:

class PostSerializer(serializers.ModelSerializer):

class Meta:
    model = Post
    fields = ('id', 'content')
在views.py中:

@api_view(['PUT'])
def create_post(request):
    if request.method == 'PUT':
        post_data = JSONParser().parse(request)
        post_serializer = PostSerializer(data = post_data)
        if post_serializer.is_valid():
            data_to_clean= str(post_serializer.data['content']) # this is raw text (i.e: "aBcD")
            cleaned = clean(data_to_clean) # this is text after cleaning (i.e: "abcd")
            post_serializer.data['content'] = cleaned # update the new text
            return JsonResponse(post_serializer.data, status = status.HTTP_200_OK)
        return JsonResponse(post_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

你能指出这个代码有什么问题吗。非常感谢。

post_序列化程序是不可变的,您不能更改,您必须创建该序列化程序的精确副本,并且您可以执行您的操作

from django.http import QueryDict
@api_view(['PUT'])
def create_post(request):
    if request.method == 'PUT':
        post_data = JSONParser().parse(request)
        post_serializer = PostSerializer(data = post_data)
        if post_serializer.is_valid():
            data_to_clean= str(post_serializer.data['content']) # this is raw text (i.e: "aBcD")
            cleaned = clean(data_to_clean) # this is text after cleaning (i.e: "abcd")
            query_dict = QueryDict('', mutable=True)
            query_dict.update(post_serializer.data)
            query_dict.data['content'] = cleaned # update the new text
            return JsonResponse(query_dict.data, status = status.HTTP_200_OK)
        return JsonResponse(query_dict.errors, status=status.HTTP_400_BAD_REQUEST)

我想您需要致电
post\u serializer.update()
感谢您的回复。我会尽快尝试的Hi suresh,我试过你的代码,但似乎QueryDict对象没有属性“data”,我找到了!如果我们只键入“query_dict['content']=…”,它将像一个符咒一样工作。谢谢你的帮助