관리자 페이지 추가 및 버그 수정
- 관리자 대시보드 추가 (/admin/)
- 통계: 총 포스트, 공개/비공개, 삭제된 포스트, 회원 수
- 포스트 관리 추가 (/admin/posts)
- 목록, 검색, 필터링, 페이지네이션
- 포스트 수정, 삭제, 복구 기능
- 회원 관리 추가 (/admin/members)
- 회원 목록, 추가, 수정, 삭제
- 비밀번호 재설정
- 버그 수정
- g.is_login, g.user_info 기본값 설정
- index 페이지 빈 포스트 처리
- 관리자 권한: admin, wixon, javamon
- README.md 프로젝트 문서 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 15:30:49 +09:00
|
|
|
# WIXON Blog
|
|
|
|
|
|
|
|
|
|
Flask 기반 블로그 애플리케이션입니다.
|
|
|
|
|
|
|
|
|
|
## 프로젝트 구조
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
wixon_blog/
|
|
|
|
|
├── app.py # Flask 메인 애플리케이션
|
|
|
|
|
├── templates/ # Jinja2 템플릿
|
|
|
|
|
│ ├── base.html # 기본 레이아웃
|
|
|
|
|
│ ├── index.html # 메인 페이지
|
|
|
|
|
│ ├── login.html # 로그인 페이지
|
|
|
|
|
│ ├── post.html # 포스트 상세
|
|
|
|
|
│ ├── write.html # 포스트 작성
|
|
|
|
|
│ ├── edit_post.html # 포스트 수정
|
|
|
|
|
│ └── admin/ # 관리자 페이지
|
|
|
|
|
│ ├── base_admin.html # 관리자 베이스 템플릿
|
|
|
|
|
│ ├── dashboard.html # 대시보드
|
|
|
|
|
│ ├── posts.html # 포스트 관리
|
|
|
|
|
│ ├── post_detail.html # 포스트 수정
|
|
|
|
|
│ ├── members.html # 회원 목록
|
|
|
|
|
│ └── member_form.html # 회원 추가/수정
|
|
|
|
|
├── static/
|
|
|
|
|
│ ├── css/
|
|
|
|
|
│ │ ├── style.css # 메인 스타일
|
|
|
|
|
│ │ └── admin.css # 관리자 스타일
|
|
|
|
|
│ ├── images/ # 이미지 파일
|
|
|
|
|
│ ├── font/ # 웹 폰트
|
|
|
|
|
│ └── upload/img/ # 업로드 이미지
|
|
|
|
|
└── README.md
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 기술 스택
|
|
|
|
|
|
|
|
|
|
- **Backend**: Flask (Python)
|
|
|
|
|
- **Database**: MySQL
|
|
|
|
|
- **Frontend**: UIKit 3.6.16, jQuery, Summernote Editor
|
|
|
|
|
- **인증**: bcrypt 암호화, Session 기반
|
|
|
|
|
|
|
|
|
|
## 주요 기능
|
|
|
|
|
|
|
|
|
|
### 사용자 기능
|
|
|
|
|
- 블로그 포스트 조회
|
|
|
|
|
- 로그인/로그아웃
|
|
|
|
|
- 포스트 작성 (로그인 필요)
|
|
|
|
|
- 포스트 수정/삭제 (작성자 또는 관리자)
|
|
|
|
|
|
|
|
|
|
### 관리자 기능 (`/admin/`)
|
|
|
|
|
- **대시보드**: 통계 (총 포스트, 공개/비공개, 회원 수)
|
|
|
|
|
- **포스트 관리**: 목록, 검색, 필터링, 수정, 삭제, 복구
|
|
|
|
|
- **회원 관리**: 목록, 추가, 수정, 삭제, 비밀번호 재설정
|
|
|
|
|
|
|
|
|
|
## URL 구조
|
|
|
|
|
|
|
|
|
|
| URL | 설명 |
|
|
|
|
|
|-----|------|
|
|
|
|
|
| `/` | 메인 페이지 |
|
|
|
|
|
| `/login` | 로그인 |
|
|
|
|
|
| `/logout` | 로그아웃 |
|
|
|
|
|
| `/post/<id>` | 포스트 상세 |
|
|
|
|
|
| `/write` | 포스트 작성 |
|
|
|
|
|
| `/edit_post/<id>` | 포스트 수정 |
|
|
|
|
|
| `/admin/` | 관리자 대시보드 |
|
|
|
|
|
| `/admin/posts` | 포스트 관리 |
|
|
|
|
|
| `/admin/members` | 회원 관리 |
|
|
|
|
|
|
|
|
|
|
## 실행 방법
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 의존성 설치
|
|
|
|
|
pip install flask pymysql bcrypt beautifulsoup4 markupsafe
|
|
|
|
|
|
|
|
|
|
# 앱 실행
|
|
|
|
|
python3 app.py
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
서버가 `http://0.0.0.0:8899`에서 실행됩니다.
|
|
|
|
|
|
|
|
|
|
## 데이터베이스 테이블
|
|
|
|
|
|
|
|
|
|
### blog
|
|
|
|
|
| 컬럼 | 설명 |
|
|
|
|
|
|------|------|
|
|
|
|
|
| id | PK |
|
|
|
|
|
| user_id | 작성자 ID (FK) |
|
|
|
|
|
| title | 제목 |
|
|
|
|
|
| category | 카테고리 (IT, NEWS, ETC) |
|
|
|
|
|
| contents | 내용 (HTML) |
|
|
|
|
|
| thumbnail_img | 썸네일 URL |
|
|
|
|
|
| public_yn | 공개 여부 (Y/N) |
|
|
|
|
|
| use_yn | 사용 여부 (Y/N, 소프트 삭제) |
|
|
|
|
|
| add_date | 작성일 |
|
|
|
|
|
|
|
|
|
|
### member
|
|
|
|
|
| 컬럼 | 설명 |
|
|
|
|
|
|------|------|
|
|
|
|
|
| mb_idx | PK |
|
|
|
|
|
| mb_id | 로그인 ID |
|
|
|
|
|
| mb_passwd | 비밀번호 (bcrypt) |
|
|
|
|
|
| mb_name | 이름 |
|
|
|
|
|
|
|
|
|
|
## 관리자 계정
|
|
|
|
|
|
|
|
|
|
- 관리자 권한: `admin`, `wixon`, `javamon` 아이디 보유자
|
|
|
|
|
|
|
|
|
|
## 라이선스
|
|
|
|
|
|
|
|
|
|
WIXON Associates Inc.
|