-
[Django]에러Django_BE 2023. 6. 5. 23:15
AssertionError: The field 'place_id' was declared on serializer UserReviewedGetSerializer, but has not been included in the 'fields' option.
AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
두가지의 에러가 떴다
각각에 대해서 살펴보자
AssertionError: The field 'place_id' was declared on serializer UserReviewedGetSerializer, but has not been included in the 'fields' option.
첫번째 오류는 아래코드에서 발생되었다
class UserReviewedGetSerializer(serializers.ModelSerializer): place_id = serializers.IntegerField() class Meta: model = PlaceVisitorReview fields = ['place_name']
첫 번째 오류인 "AssertionError: The field 'place_id' was declared on serializer UserReviewedGetSerializer but has not been included in the 'fields' option"은 'place_id' 필드가 UserReviewedGetSerializer에서 정의되었지만, 해당 필드가 직렬화기(serializer)의 Meta 클래스의 'fields' 옵션에 포함되지 않아 발생합니다. 이 오류를 해결하기 위해 UserReviewedGetSerializer의 Meta 클래스의 'fields' 리스트에 'place_id'를 추가해야 합니다.
class UserReviewedGetSerializer(serializers.ModelSerializer): place_id = serializers.IntegerField() class Meta: model = PlaceVisitorReview fields = ['place_name', 'place_id'] # 'place_id'를 fields 리스트에 추가합니다.
AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
두번째 에러는 아래 코드에서 발생되었다.
def get(self,request): try: user = request.user self.user=user selector = UserReviewedSelector(user) places = selector.list() serializer = self.UserReviewedGetSerializer(places,many=True) return Response({ 'sataus':'success', 'data':serializer.data, },status=status.HTTP_200_OK) except Exception as e: print("오류가 발생했습니다.") print(traceback.format_exc())
두 번째 오류인 "AssertionError: Expected a Response, HttpResponse or HttpStreamingResponse to be returned from the view, but received a <class 'NoneType'>"는 뷰(view)에서 모든 코드 경로에서 응답을 반환하지 않아 발생합니다. get 메서드의 except 블록에서는 print 문이 있지만 반환(return) 문이 없습니다. 이 오류를 해결하기 위해 except 블록에 오류 응답과 함께 반환 문을 추가하거나 예외를 처리하여 유효한 응답을 반환해야 합니다.
다음은 except 블록에 오류 응답과 함께 반환 문을 추가하는 예입니다:
def get(self, request): try: # ... except Exception as e: print("오류가 발생했습니다.") print(traceback.format_exc()) return Response({'status': 'error', 'message': '오류가 발생했습니다.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
장고 입문 한달만에 결과 띄우기 성공!
'Django_BE' 카테고리의 다른 글
[Django]다른 팀원의 코드를 pull 했을때 오류가 난다면? (0) 2023.06.07 [Django]외래키관계를 통해 정의된 모델의 필드 가져오기 (0) 2023.06.06 [Django]로컬 db가 비었다 (0) 2023.06.01 [Django]모델의 모든 객체를 다 가져오기 (0) 2023.06.01 [Python Django]에러 메시지 보이기 (0) 2023.05.30