@api_view(['POST'])实现数据修改
时间: 2024-09-30 17:12:12 浏览: 41
在Django Rest Framework (DRF) 中,`@api_view`装饰器用于创建单个视图函数,该函数可以处理多种HTTP方法,包括POST用于数据修改。这里是一个例子:
```python
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.parsers import JSONParser
from .serializers import UserSerializer
from .models import User
@api_view(['POST'])
def user_update(request):
"""
更新用户数据
---
Request_serializer: UserSerializer
Response_serializer: UserSerializer
"""
parser_classes = [JSONParser] # 设置解析器,这里支持JSON格式的数据
if request.method == 'POST':
serializer = UserSerializer(data=request.data) # 使用序列化器来验证和转换数据
if serializer.is_valid(raise_exception=True): # 如果验证通过,保存数据
user = serializer.save() # 获取模型实例并保存
response_data = UserSerializer(user).data # 序列化响应数据
return Response(response_data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) # 验证失败,返回错误信息
```
在这个例子中,`@api_view(['POST'])`告诉DRF这个函数仅接受POST请求。当接收到POST请求时,它会尝试将请求体的数据解析为`UserSerializer`的实例,然后保存数据。如果一切顺利,返回新用户的数据;如果有错误,就返回错误信息。
阅读全文