1
我在Django Rest Framework中使用友誼Django模塊。在創建API時,Serializer的create()可能會引發一些異常 - AlreadyFriendsError,DoesNotExist或AssertionError。現在,當發生異常時,返回對象無效(無),並且我得到一個Traceback,其中AssertionError:create()
未返回對象實例。DRF - 如何處理序列化程序create()中的異常?
從我的API views.py
class FriendManageAPIView(CreateAPIView):
permission_classes = (permissions.IsAuthenticated,)
serializer_class = FriendManageSerializer
def post(self, request, *args, **kwargs):
if request.data['action'] == 'add_friend':
return self.create(request, *args, **kwargs)
從我的API serializers.py
class FriendManageSerializer(serializers.ModelSerializer):
to_user = serializers.CharField(max_length=150)
def create(self, validated_data):
friendship_ret = None
try:
request = self.context.get("request")
if request and hasattr(request, "user"):
user = request.user
user_model = get_user_model()
to_user = user_model.objects.get(username=request.data['to_user'])
friendship_ret = Friend.objects.create(
from_user=user, # The sender
to_user=to_user, # The recipient
)
friendship_ret.save()
except (AlreadyFriendsError, user_model.DoesNotExist, AssertionError):
print("EXCEPTION FriendManageSerializer.create()")
return friendship_ret
我應該如何真正處理這種情況?當對象無效時應該返回什麼?