#python #django #django-rest-framework
#python #django #django-rest-framework
Вопрос:
У меня есть регистратор, который записывает действия в представлении. Я успешно записываю все выполненные запросы, но не могу понять, как записать ошибки проверки сериализатора, например, если я ввел дату не в формате, я хочу записать в регистратор
logger.warning('Error Incorrectly entered data {}'.format(Output serializer error here)
Где и как я должен записать свое сообщение в регистратор?
мой код
views.py
logger = logging.getLogger(__name__)
class EventView(viewsets.ModelViewSet):
queryset = Event.objects.all()
lookup_field = 'pk'
serializer_class = EventSerializer
permission_classes = [ProjectPermission.IsPartner | ProjectPermission.IsAdmin]
def perform_create(self, serializer):
serializer.save(partnerId=self.request.user.user)
@action(detail=True, methods=['get'])
def getEvent(self, request, *args, **kwargs):
response = self.retrieve(request, *args, **kwargs)
logger.debug('Event {} name was get'.format(response.data))
return response
@action(detail=True, methods=['put'])
def putEvent(self, request, *args, **kwargs):
response = self.update(request, *args, **kwargs)
logger.debug('Event {} was change'.format(response.data))
return response
@action(detail=True, methods=['delete'])
def deleteEvent(self, request, *args, **kwargs):
response = self.destroy(request, *args, **kwargs)
logger.debug('Event {} was delete'.format(response.data))
return response
@action(detail=True, methods=['post'])
def postEvent(self, request, *args, **kwargs):
response = self.create(request, *args, **kwargs)
logger.debug('Event {} was delete'.format(response.data))
return response
serializers.py
class EventSerializer(serializers.ModelSerializer):
start_date = serializers.DateTimeField(format='%d-%m-%YT%H:%M:%SZ')
end_date = serializers.DateTimeField(format='%d-%m-%YT%H:%M:%SZ')
class Meta:
model = Event
fields = ('id', 'title', 'description', 'start_date', 'end_date', 'cover_page_url', 'address', 'city', 'sportType',
'participantLimit', 'generalInformation', 'enabled', 'partnerId'
)
extra_kwargs = {"partnerId": {'read_only': True}}
Ответ №1:
Вы можете проверить достоверность ваших данных с serializer.is_valid()
помощью . Поэтому, когда он возвращает False, вы можете записывать в регистратор.