-
[4월 1주차-4/2]📘 Pybo - Flask로 만드는 실전형 Q&A 게시판 완성Why Not SW CAMP 5기/수업 기록 2025. 4. 2. 17:50
Pybo 프로젝트를 통해 로그인, 권한, 추천, 검색까지 풀스택 게시판을 완성해보았습니다.
🔧 주요 기능 한눈에 보기
기능 설명
회원가입 / 로그인 / 로그아웃 Flask session 기반 인증 질문 / 답변 등록, 수정, 삭제 본인만 가능하도록 권한 체크 추천 / 추천 취소 중복 추천 방지, 본인 추천 금지, 토글 방식 검색 제목, 내용, 작성자 기준 검색 가능 페이지네이션 질문 목록 페이지 나누기 작성일 / 수정일 표시 시간 정보 표시 UI 구성 질문 등록/검색 버튼 정렬, 반응형 구조
🗂️ 프로젝트 구조 (중요 파일)
pybo/ ├── __init__.py # 앱 생성 및 설정 ├── models.py # SQLAlchemy 모델 정의 ├── views/ # 라우터 분리 │ ├── main_views.py │ ├── question_views.py │ ├── answer_views.py │ └── auth_views.py ├── forms.py # WTForms 폼 정의 (질문 등록에만 사용) ├── templates/ # 템플릿 구조 │ ├── base.html │ └── question/ # 질문 관련 템플릿들 │ └── answer/ # 답변 관련 템플릿들 │ └── auth/ # 로그인/회원가입 관련 템플릿들 ├── static/style.css # 커스텀 스타일시트 └── config.py # DB 설정 등 환경설정
🛠️ 구현된 핵심 기능
✍️ 질문 & 답변 CRUD

- 로그인한 사용자만 글 작성 가능
- 본인이 작성한 글만 수정/삭제 가능
- 수정 시 수정일자 표시 (modify_date)
- 답변은 WTForms 없이 textarea로 처리
✅ 권한 제어 데코레이터

@login_required- 비로그인 시 로그인 페이지로 이동
- 작성자 아닌 경우 flash로 권한 제한 메시지 출력
👍 추천 기능 (토글 방식)

- 중복 추천 방지
- 추천 누르면 +1, 다시 누르면 취소
- 추천 수 실시간 반영
if g.user in question.voter: question.voter.remove(g.user) else: question.voter.append(g.user)🔍 검색 기능

- 제목 / 내용 / 작성자에 대해 검색
- 페이지네이션과 함께 작동
if kw: search = f"%{kw}%" question_query = question_query.join(User).filter( or_( Question.subject.ilike(search), Question.content.ilike(search), User.username.ilike(search) ) )🔐 로그인 관련 UX
- 비로그인 시 질문 등록 버튼 누르면 로그인 화면으로
- 로그인/로그아웃 메뉴 토글
- 로그인한 사용자만 답변/추천 가능
- 작성자만 수정/삭제 가능
🎨 프론트엔드 스타일 포인트

- 상단에 고정된 Pybo 헤더 + 푸터
- 질문 등록: 왼쪽 정렬 / 검색창: 오른쪽 정렬
<div class="top-action-bar"> <div class="left"> <a href="{{ url_for('question.create') }}" class="btn btn-create">질문 등록</a> </div> <form ... class="search-form-inline">...</form> </div>- 질문 목록 테이블: 번호 / 제목 / 작성자 / 작성일시 / 답변 수 표시
- 각 질문 클릭 시 상세 페이지로 이동
- 답변은 중앙 정렬된 카드 형식으로 예쁘게 표시
- 작성자명, 작성일시, 수정일시 표시
💬 마무리
Pybo는 단순한 CRUD 게시판을 넘어서, 권한, 추천, 검색, 디자인까지 포함된 완성형 Flask 미니 프로젝트입니다.
📌 다음 단계로:
- 배포(Render, Railway 등)
- 관리자 모드 구현
궁금한 점이 있다면 언제든지 질문해주세요 😄
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[4월 1주차-4/4]🚀 Pybo Q&A 게시판 AWS Lightsail로 배포하기 (0) 2025.04.07 [4월 1주차-4/3]🧭 Pybo 프로젝트 GitHub에 올리고 SourceTree로 형상관리하기 (0) 2025.04.03 [4월 1주차-4/1]🧠 Flask로 나만의 Q&A 게시판 만들기 (SQLAlchemy & Migrate 활용) (1) 2025.04.01 [3월 5주차-3/31]🐍 Flask로 로그인 시스템 만들기 - 기초부터 실습까지! (0) 2025.03.31 [3월 4주차-3/28]경사하강법을 사용한 선형 회귀 학습 및 예측 평가 (0) 2025.03.31