본문 바로가기

내일배움캠프

WIL - django 기초 주차

팀 과제가 어느정도 마무리 되었다.

필수기능은 대부분 구현이 끝난 상태이고 남은 기능도 하루안에 끝낼 수 있다.

이번 팀 과제에서 나는 주로 게시글과 관련된 기능을 맡았다. 기본적인 생성, 조회, 수정, 삭제 / 게시글에 댓글작성, 삭제 / 상품찜하기 / 게시글 조회수 / 해시태그 / 게시글 검색 기능을 구현했다.

가장 힘들 었던 것은 해시태그였다. 대부분의 내용은 강의에서 배운 것을 그대로, 혹은 조금 응용하면 쉽게 구현해낼 수 있었지만 해시태그는 접근방식부터 고민이 들었다. 입력은 어떻게 받는게 좋을까? 출력방식은 어떻게 하지? 등등... 적지 않은 고민이 있었다. 그리고 사실 SNS를 잘 사용하지 않기 때문에 해시태그가 정확히 어떤 기능을 해야 하는지 잘 알지 못했다. 그렇다고 안할수도 없었으니 나름대로 고민을 해서 방법을 구상했다.

입력받는 방식에 대한 고민이 실질적으로 가장 많았다. 기존에 글작성/수정을 할때 사용하던 form은 글에 대한 정보를 가지고 있는 Product model을 가져와서 생성한 model form이었는데 해시태그를 기존의 방법처럼 입력을 받는 것은 힘들어보였다. 해시태그 필드가 Product에 작성된 것은 맞았지만 이것을 모델폼에 그대로 적용을 하면 select창이 생성되어서 새로운 데이터를 받아올 수 없기 때문이다. 아마도 username처럼 값들이 정해져있는 필드였기 때문일 것이다. 따라서 model form에서는 해시태그를 입력하는 란을 생성하지 않도록 설정하고 새로운 html에 input을 작성해서 해시태그에 대한 데이터는 따로 입력받기로 했다. 자연스럽게 다른 방법으로 입력받은 데이터를 어떻게 데이터베이스에 입력할 지에 대한 고민이 뒤따랐는데 다행히 이전에 해봤던 것이 도움이 되었다. 게시글을 작성할 때 작성자도 form에서 입력을 받지 않고 정해진 데이터를 입력해주는 방식이었기 때문이다. 약간 달랐지만 정해진 데이터 대신 입력받은 데이터를 사용하는 방식으로 바꿔준다면 비슷하게 적용할 수 있다.

다음문제는 게시글 하나가 포함할 수 있는 해시태그가 여러개라는 것이다. 글 하나가 해시태그 하나만 포함을 하게 된다면 작성자와 거의 동일한 방법으로 적용할 수 있었지만 해시태그는 달랐다. 그래서 생각한 방법은 파이썬의 리스트를 이용하는 방법이었다. 입력받을 해시태그들은 사용자로부터 ,(콤마)를 기준으로 구별받아서 입력받도록 하고 입력받은 데이터를 콤마 기준으로 분할해서 리스트로 변경해준 뒤, 반복문을 통해서 데이터베이스에 입력하는 방법이다. 입력폼에 대한 제한은 간단한 javascript를 작성해서 해결했다. 한글, 영문, 숫자와 콤마만 입력할 수 있도록 하고 그 이외의 문자가 입력될 경우 즉시 빈 문자로 바꿔주도록 해서 입력값이 반드시 문자 혹은 콤마만 받을 수 있게 되었다.

위의 방법으로 데이터를 입력받으니 나머지는 간단했다. 출력은 이미 데이터베이스에 입력된 값을 반복문으로 출력만 해주면 되는 것이었다. 그리고 같은 해시태그들을 모아서 볼 수 있도록 해시태그를 클릭하면 그 해시태그를 포함하고 있는 모든 글을 보여주도록 했다.

그렇게 해서 대략적인 과제가 끝이 났다.

 

개인적으로 아쉬운점이 있다면 내가 너무 많은 부분을 맡아서 작업했다는 점이다. 당연히 혼자해서 싫었다  라거나 다른 팀원들이 열심히 하지 않았다 이런 의미가 아니고 내가 다른 팀원들이 열심히 할 기회를 뺏어버렸다는 느낌이 들었다... 처음 맡아보는 팀장이라 나름대로 책임감을 가지고 어려워보이거나 힘이 들것같은 부분들을 맡았지만 반대로 그런 부분들을 다 해버리니 다른 팀원들이 공부할 기회가 적어졌다고 해야할까... 이 과제는 실제 프로젝트가 아니라 공부니까 말이다.

 돌아오는 월요일에는 다른 팀원들도 django에 익숙해 질 수 있도록 나름대로 추가하면 좋을것같은 기능들을 준비해보았다. 하고 싶은 팀원이 있으면 작성을 부탁하고 아무도 없으면 그냥 내가 해버리도록 하자. 어차피 추가할 기능이었으니.

'내일배움캠프' 카테고리의 다른 글

Django기초주차 - 마무리  (0) 2024.08.28
DJango 기초 - 마무리  (0) 2024.08.26
스쿼드과제 - LLM 관련 논문 요약  (0) 2024.08.25
충격과 공포의 Django 협업 2일차  (0) 2024.08.22
django 실습 1일차  (0) 2024.08.22