106 lines
2.5 KiB
Markdown
106 lines
2.5 KiB
Markdown
# Flask簡易任務管理器
|
|
|
|
這是一個使用 Flask 框架開發的待辦事項管理應用程式。
|
|
|
|
## 功能特點
|
|
|
|
- 用戶註冊和登錄
|
|
- 新增、編輯、刪除待辦事項
|
|
- 設置任務優先級
|
|
- 更新任務狀態
|
|
- 搜索任務
|
|
- 安全的密碼存儲(使用 bcrypt 加密)
|
|
|
|
## 使用技術或語言
|
|
|
|
- Python
|
|
- Flask
|
|
- MySQL
|
|
- Flask-Bcrypt
|
|
- HTML/CSS (前端模板未包含在此代碼中)
|
|
|
|
## 安裝步驟
|
|
|
|
1. clone項目
|
|
2. 安裝所需的 Python 套件:
|
|
```
|
|
pip install flask flask-bcrypt mysql-connector-python
|
|
```
|
|
3. 設置 MySQL 資料庫,並更新程式碼中的資料庫連接資訊
|
|
4. 執行應用:
|
|
```
|
|
python app.py
|
|
```
|
|
|
|
## 資料庫結構
|
|
|
|
應用程式使用兩個主要的資料庫表:
|
|
|
|
1. `users` 表:存儲用戶資訊
|
|
- id (主鍵)
|
|
- username
|
|
- password (加密存儲)
|
|
|
|
2. `tasks` 表:存儲任務資訊
|
|
- id (主鍵)
|
|
- title
|
|
- description
|
|
- status
|
|
- priority
|
|
- user_id (外鍵,關聯到 users 表)
|
|
- created_at
|
|
|
|
### 創建 `users`
|
|
```sql
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
password VARCHAR(255) NOT NULL
|
|
);
|
|
```
|
|
|
|
### 創建 `tasks`
|
|
```sql
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
title VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
status ENUM('待辦', '進行中', '已完成') DEFAULT '待辦',
|
|
priority ENUM('低', '中', '高') DEFAULT '中',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
```
|
|
|
|
## 路由說明
|
|
|
|
- `/register`: 用戶註冊
|
|
- `/login`: 用戶登錄
|
|
- `/logout`: 用戶登出
|
|
- `/`: 主頁(顯示任務列表)
|
|
- `/add_task`: 新增任務
|
|
- `/edit_task/<task_id>`: 編輯任務
|
|
- `/delete_task/<task_id>`: 刪除任務
|
|
- `/update_status/<task_id>/<new_status>`: 更新任務狀態
|
|
|
|
## 安全性
|
|
|
|
- 使用 Flask-Bcrypt 進行密碼加密
|
|
- 實現了登錄裝飾器,確保只有已登錄的用戶才能訪問受保護的路由
|
|
- 使用參數化查詢防止 SQL 注入攻擊
|
|
|
|
## 注意事項
|
|
|
|
- 在生產環境中部署時,請確保更改 `app.secret_key`
|
|
- 建議使用環境變數來存儲敏感資訊,如資料庫憑證
|
|
- 此代碼不包含前端模板,您需要創建相應的 HTML 模板來完成應用程式
|
|
|
|
## 未來改進
|
|
|
|
- 實現任務分類功能
|
|
- 添加任務截止日期
|
|
- 實現用戶角色和權限管理
|
|
- 添加電子郵件通知功能
|
|
- 改進錯誤處理和日誌記錄
|