gpt4 book ai didi

python - django rest 框架 - 使用 detail_route 和 detail_list

转载 作者:太空狗 更新时间:2023-10-29 18:22:01 27 4
gpt4 key购买 nike

在我的代码中,我有一个用户 View 集。我想要的是只允许读取操作(/users/42/users/),ReadOnlyModelViewSet 做得很好。

此外,我想要一个/users/register URL,我可以POST 到该URL 以注册新用户。

class UserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer

@list_route(methods=['post'])
def register(request):
serializer = UserSerializer(data=request.DATA)
if serializer.is_valid():
user = User.objects.create_user(
username = serializer.init_data['username'],
password = serializer.init_data['password'],
)

return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

几个问题:

  • 这是正确的做法吗?

  • 如果我将某个方法放在 list_routedetail_route 装饰器中,是否有特定的签名?因为在 detail_route 示例中,方法的签名始终相同:method_name(self, request, pk=None):

谢谢!

最佳答案

detail_route 和 detail_list 将在 DRF 3.0 上被弃用,取而代之的是使用@action:

from rest_framework.decorators import action
@action(methods=['POST'], detail=True)
def sale(self):
...

当此方法将说明由该端点表示的模型的单个实例时使用 detail=True,当它需要表示该模型的查询集时使用 False

关于python - django rest 框架 - 使用 detail_route 和 detail_list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30410432/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com