게시판 카테고리 만들기 - 1

Red_Panda·2021년 5월 5일
0

엄청 어려운것 같지는 않은데 전혀 감을 못잡아서 해결하지 못했던 카테고리 나누기.
오늘 이것저것 시도해보다가 드디어 실마리가 보였다.

먼저 질문게시판, 자유게시판으로 게시판을 2가지로 만들기로 계획했다. 하나만 추가할 줄 알면 그 이후로 추가하는데에는 쉬우니까.

그래서 먼저 Question 모델에 게시판을 나눌 용도로 사용할 Category를 추가했다.

그리고 question.view에 Category 모델을 import 해주고, 게시판 종류에 따라 url이 다르게 적용되는것을 먼저 목표로 했다.
url주소는 이렇게 한다.

http://localhost:5000/question/list/게시판종류 

그러면 저 게시판종류에 해당하는 문자를 category_name으로 받아오면 된다.
아직 Question에 category가 저장된 경우가 아직 없으므로 모든 질문글을 불러오는 상태로 url만 적용되는지 봤다.



render_tamplate에 category=category도 추가했다.

그리고 question_list.html에서 각 게시판 버튼을 만들고, 카테고리를 붙인 주소를 연결했다. list/ 뒷부분이 category_name이 될 부분이다. (나중에 서버에 적용할때는 주소를 서버에 맞게 수정하면 된다.)

각각 게시판을 누를때 의도한 url로 나온다.
이 부분을 이용해 create부분도 수정했다.


create할때 url에 따라(현재 게시판 주소) category_name을 다르게 저장해야한다.

category = Category.query.get_or_404(category_name)

를 이용해서, Question 데이터에도 category도 함께 저장 시킬수 있다. 이 정보는 나중에 카테고리별 리스트를 출력할때 사용한다.

<string:category_name>에 따라 question table의 category_name이 잘 저장된다.
free는 자유게시판에서 질문을 등록했을때다.
질문 글을 만들때 데이터는 잘 저장됐는데 다시 question/list/카테고리 리스트 부분을 띄우는 부분이 계속 안되서 계속 실험 해보느라 이렇게 됐다.


각 카테고리별 질문글 등록 url이 다르다.


그리고 question_list.html에서 create부분의 url_for에도 카테고리 이름을 적용해준다.
그러면 이 영상과 같이 질문글을 등록하고나서도 원래있던 카테고리 질문 리스트를 보여 준다.


그리고 Home 버튼을 눌렀을때는 기본 화면으로 지정한 qna 게시판으로 이동 하도록 했다.

지금까지 카테고리별로 주소를 나누었고, 질문글 생성시에 해당 카테고리가 저장 되도록 했다. 그럼 이제 각 게시판 카테고리에 해당하는 질문글들만 리스트로 보이게 하면된다.

크게 수정할건없었다. question_views의 _list부분에서 나타낼 question_list를 설정하면된다.

기존 코드로 정렬 상태를 정하고, filter로 현재 카테고리와 question의 카테고리가 똑같은 질문글만 보이면 된다.


이렇게 각 카테고리별로 잘 나온다.

사실 카테고리를 나누는 작업은 예전 점프 투 플라스크 책 내용을 다 만들었을 때부터 시도를 하려했다. 처음에 말했듯이 전혀 감을 잡지 못해서 당장 해볼만한 것부터 시도 해왔고
코딩테스트 연습이나 CS 공부를 해야해서 점점 미뤘다가 오늘 아예 날잡고 해보자 하는 마음으로 하루죙일 팠더니 진전이 보인다.
pybo.kr에서 조금 힌트를 얻었다.
몇몇 질문 글들에서 Django로 카테고리를 나눌때의 힌트가 있었다. 이 힌트와 기존 코드를 응용 해보는 방향으로 시도 했다. (사실 힌트는 예전부터 봤었는데 어떻게 적용해야 할지를 몰랐다.)
진전이 보이니까 넘나 재밌다.

아직 aws서버에 적용하기에는 모자른 부분이 많다. 나머지 부분도 작성하고 ver 1.3으로 적용할 생각이다.

작성 해야할 것

  • delete때도 create와 마찬가지로 원래 카테고리 리스트로 돌아가기 (수정은 잘 된다. 수정 후 보여주는 페이지는 기존과 같아서 그렇다.)
  • 내 질문글을 모아보는경우 카테고리 상관없이 보기 (그냥 기존상태로도 볼 수 있을줄 알았는데 url_for 부분에서 에러가 난다.

지금 당장 발견한 고쳐야 할 것은 이정도다. 아마 작성하면서 기능을 확인할때 고쳐야 할 점이 더 나올 것이다.

profile
신입 개발자

0개의 댓글