[2차 프로젝트] - 5일차

7177 단어 WeCode위코드WeCode

[2차 프로젝트] - 5일차


검색어에서 "안" 이라고 입력했을 때, 데이터베이스에 책과 작가에 "안"이라는
글자가 있을 시, 데이터가 나오는 걸 구현하고 싶다고 하셔서

급하게 해당 로직을 짜게 되었습니다.

def get(self, request) :
        try :
            keyword = request.GET.get('keyword')

            author_list = [
                {
                    'author_id'    : author.id,
                    'author_name'  : author.name,
                    'author_books' : [Book.objects.get(id=book.book_id).main_name for book in BookAuthor.objects.filter(author_id=author.id)]
                }
            for author in Author.objects.filter(name__icontains=keyword)]

            book_list = [
                {
                    'book_id'        : book.id,
                    'book_name'      : book.main_name,
                    'book_author'    : [Author.objects.get(id=author.author_id).name for author in BookAuthor.objects.filter(book_id=book.id)],
                    'book_publisher' : Publisher.objects.get(id=book.publisher_id).name
                }
            for book in Book.objects.filter(main_name__icontains=keyword)]
            

            return JsonResponse({'author_list' : author_list, 'book_list' : book_list}, status=200)

검색어에 단어를 입력할 때마다 프론트에서 fetch함수에서 설정한 url로
저에게 계속 요청을 보내서 저는 그 단어가 들어가는 걸 필터링해주는 것입니다.

일단, 대소문자 구분없이 보여주기 위해 icontains를 사용하게 되었습니다.

작가부분엔 작가이름과 책제목 외 몇 권이 들어가는데,
몇 권의 책을 알기 위해 작가의 책들을 리스트로 보냈습니다.

책 리스트의 경우, 책에 여러 작가가 들어갈 수 있기 때문에,
작가들을 리스트로 보내줬습니다.

이 쉬운로직에 대해 계속 500에러가 났고, 처음에 제 터미널에 찍히는 게

GET /subscribe/core?keyword=%E3%85%87

이렇게 돼서, 한글을 못 읽나? 이생각을 했었고, urllib를 import하여
인코드, 디코드 방법 등 사용해도 에러가 발생했기 때문에 멘토님께 갔습니다..

멘토님께서 오류를 계속 보시더니..

퍼블리셔 객체 타입에러라고 뜨는데, 이 부분 어떻게 되어있어요? 라고 물으셨고

book_publisher' : Publisher.objects.get(id=book.publisher_id).name

이렇게 되어있어야 하는게

book_publisher' : Publisher.objects.get(id=book.publisher_id)

이렇게 되어 있어서 에러가 발생했던 것입니다..

말도 안되는 실수(가 아닌 실력)때문에 쓸 떼 없는데 시간을 보내게 되었습니다.

그 후에 연동했을 때, 요청이 잘 들어오는 걸 확인했고 이 부분은 끝났습니다..

이거 끝내고 단위테스트와 장고orm 최적화로 하루를 다 썼습니다..

좋은 웹페이지 즐겨찾기