例:
def create(self, validated_data):
email = validated_data.get("email", None)
validated.pop("email")
# Now you have a clean valid email string
# You might want to call an external API or modify another table
# (eg. keep track of number of accounts registered.) or even
# make changes to the email format.
# Once you are done, create the instance with the validated data
return models.YourModel.objects.create(email=email, **validated_data)
中的create(self, request, *args, **kwargs)
函数在的父类中ModelViewSet
定义。的主要功能如下:CreateModelMixin``ModelViewSet``CreateModelMixin
from rest_framework import status
from rest_framework.response import Response
def create(self, request, args, *kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
def perform_create(self, serializer): serializer.save()
如您所见,以上create
函数负责在序列化程序上调用验证并产生正确的响应。这样做的好处是,您现在可以隔离应用程序逻辑,而不必担心平凡和重复的验证调用以及处理响应输出:)。与create(self, validated_data)
序列化器(您的特定应用程序逻辑所在的位置)中的结合使用时,这可以很好地工作。
希望这可以帮助!