본문 바로가기
django

2020.10.07_django 검색 기능 구현하기

by 해맑은 코린이 2020. 10. 8.

2020.10.07_django 검색 기능 구현하기_정리노트

 

 

css....해야하는데 결국 돌고돌아 오늘은 검색 기능 구현! 뭔가 간단은 한데 생각보다 헷갈리는..느낌

view에서 함수를 이용해서 filter 값이 포함된 값만 다시 띄워주면 되는거라 어떻게 보면 간단하게 구현은 ..한거 같은데 쨋든 너무 헷갈림 그 자체 휴..

 

 

일단 view 로 갑시다!!!!!!!

 

filter를 이용해서 먼저 카테고리가 자유 게시판인 오브젝트를 id 내림차순으로 들고와주고,

request POST 로 들어온 post 라는 값을 가져와서 없으면 빈 문자열을 리턴한다.

만약 post라는 값이 있으면, 제목에 post의 값이 포함된 결과를  필터링해서 free_post에 넣어주고,

최종적인 값이 담긴 free_post 와 post를 넘겨주고,

아무것도 담기지 않았다면, search.html 을 렌더해준다.

 

이게 나는 헷갈렸는데, 나중에 html을 보면 알겠지만, 그냥 간단하게 내가 만약 ㅠㅠ를 검색창에 친다고하면, ㅠㅠ 값이 post가 되는 것이고, ㅠㅠ 가 제목에서 포함된 값들을 필터링해서 들고와준다고 생각하면 될 것 같다.

 

 

 

이제 url로 가서

 

 

연결을 시켜주고, 

 

 

 

일단 검색필드 만들러 게시판 홈으로 ㄱㄱ

 

free.html ( 대충 index라 생각하면 됨. )

 

POST 폼으로 감싸주고, 템플릿태그로 search 를 호출, 또한 보안토큰 넣어주기. 요기까지는 많이 했는데,

 

여기서 placeholder 는 검색하는 필드에 그냥 채워지는 텍스트이고,

 

aria-label 이란 액세스 가능한 레이블로 사용할 문자열을 지정할 수 있다고 하는데,  뭔소리인가 해서 여러가지 찾아보는데, 간단하게 기능을 명시적으로 알려주는 것이라고 생각하면 될 것 같다.

나중에 좀 더 자세히 쓰면서 알아봐야할 것 같지만, 시작장애인들을 위한 시각적 요소 도움이라고 한다. aria-label="menu" class="bugger"  이라고 쓰게 되면, 우리가 일반적으로 앱에서 볼 수 있는 세줄로 그어진 메뉴바가 나타난다. 

이거는 나중에 sample 도 보면서 자세히 다뤄봐야겠다!

 

다음으로 우리는 아까 뷰에서 적어줬던 인자인 post 값을 value 로 가지고 와서, post라는 이름 즉, name으로 넘겨 준 것이다!

 

여기서의 이름은 label 과는 완전히 다르고 form에서 데이터가 넘어가는 form-data 에서 참조하는 이름!

 

 

 

 

이제 index페이지에서 search.html 로 넘어갑씨다. 이제 여기서 띄워줄건, 우리는 post라는 값을 가진 오브젝트들 즉, view에서 filter를 이용해서 가져왔던 free_post 를 사용할 차례!

 

그래서 free_post 가 없으면 검색결과가 없다는 텍스트를 띄워주고, 

있으면 for문을 통해 하나하나 보여준다. 

나머지 링크들은 다시 게시판으로 돌아가는 자유게시판 링크, 글 작성하는 링크,

또 free_post 들에도 클릭하면 detail페이지로 들어가게 연결한거임!

 

 

후 이제 다했따 실행 ㄱㄱ

 

 

 

 

 

 

옆에 검색필드 마냥 우리가 만들어줬던 것들이 input 태그로도 구현이 잘되어있다! 여기서 

 

 

 

 

 

나는 2번째 있는 글을 불러오고 싶기 때문에 ㅠ 하나만 써주었다. 머 ㅠㅠ 해도 상관은 없지만 뭔가 하나만 쳐도 되는지가 궁금했음.

 

 

 

오 !!!!!!!! 잘뜬다 짝짝 성공이군 자유게시판 글씨가 보라색으로 표시되는건 내가 링크로 돌아가게 해서 그럼 ㅇㅇ

 


 

오늘은 모델과 모델폼을 따로 안쓰고 input 태그랑 filter 만 써서 간단히 검색기능을 구현해봤다! 

 

후 이렇게 보니 간단한데 막상 적다보니 post랑 free_post 개념들이 많이 헷갈렸... 결국 값과 그 값들을 담아준 오브젝트들이란 것만 알면 되겠지만 헣헣 나는 나름 시간 좀 쓴듯?

 

 

오늘은 뭔가 포스팅 길이가 짧아서 되게 어색하네 쨋든 끝끝!

 

 

 

댓글