[2차 프로젝트] - 5일차
[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 최적화로 하루를 다 썼습니다..
Author And Source
이 문제에 관하여([2차 프로젝트] - 5일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kyleee/2차-프로젝트-5일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)