Python 数据不存在';发送PUT方法后不更改
我正在用PythonDjango做一些基本的CRUD应用程序。基本上,从前端,我想发送一些原始文本数据,后端将捕获它,并重新发送清理后的数据。 目前,clean方法仍然有效,但出于某种原因,它仍然将相同的原始文本发送到前端 这是我的代码: 在models.py中: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中:
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']=…”,它将像一个符咒一样工作。谢谢你的帮助