python - What's the difference between .post() , .create() and perform_create() in views.py and .create() in serializers.py -


i'm confused .post() , .create() , perform_create() in views.py , .create() in serializers.py
seems .create() in serializers.py validated_data, can not check serializer.is_valid

here serializers.py:

class postlistserializer(modelserializer):     class meta:         model = post         fields = [             'title',             'content',             'publish',         ]      def create(self, validated_data):         print("-------------------")         print("5555555 - create", validated_data)         return post.objects.create(**validated_data) 

and if code :

views.py

class testpostlistapiview(listcreateapiview):     queryset = post.objects.all()     serializer_class = postlistserializer      def post(self, request, *args, **kwargs):         serializer = postlistserializer(data=request.data)         if not serializer.is_valid(raise_exception=false):             # deal serializer.errors             return response({'[post]custome error 1 !!!!!!!!!'}, status=status.http_400_bad_request)         else:             print("[post]- serializer.validated_data ", serializer.validated_data)             serializer.save()         return response({'[post]create success'}, status=status.http_201_created) 

the process go .post() in views.py --> .create() in serializers.py --> response client

if views.py use:

class testpostlistapiview(listcreateapiview):     queryset = post.objects.all()     serializer_class = postlistserializer      # def post(self, request, *args, **kwargs):     #     serializer = postlistserializer(data=request.data)     #     if not serializer.is_valid(raise_exception=false):     #         # deal serializer.errors     #         return response({'[post]custome error 1 !!!!!!!!!'}, status=status.http_400_bad_request)     #     else:     #         print("[post]- serializer.validated_data ", serializer.validated_data)     #         serializer.save()     #     return response({'[post]create success'}, status=status.http_201_created)      def create(self, request, *args, **kwargs):         serializer = self.get_serializer(data=request.data)         print("44444-1 perform_create ", serializer)         if not serializer.is_valid(raise_exception=false):             print("44444-3 serializer.is_valid() ", serializer.is_valid())             return response({'custome error!!!!!!!!!'}, status=status.http_400_bad_request)         else:             print("44444-7 serializer.validated_data ", serializer.validated_data)         self.perform_create(serializer)         return response({ 'create success'}, status=status.http_201_created)      def perform_create(self, serializer):         print("1111-1 perform_create ", serializer)         if not serializer.is_valid(raise_exception=false):             print("1111-3 serializer.is_valid() ", serializer.is_valid())             return response({'custome error!!!!!!!!!'}, status=status.http_400_bad_request)         else:             print("1111-7 serializer.validated_data ", serializer.validated_data)         user = user.objects.filter(id=8)         serializer.save(user=user.first())         print("1111-8 perform_create ") 

the process .create() in views.py --> .perform_create() in views.py --> .create() in serializers.py --> response client

both can work!
, found if post invalid data, process not go .perform_create() part comment .create() part, seems .perform_create() can not check serializer.is_valid(),neither

so what's difference between .post() , .create() in views.py , should use .post() or should use .create() plus .perform_create()
want know because have use custome response message {'custome error!!!!!!!!!'} , i'm confused effect, should put logic


Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -