# 博客項目 ### 需求分析 - 用戶註冊登陸 - 用戶信息管理 - 博客發表回覆 - 博客列表展現 - 博客分頁展現 - 博客收藏 - 搜索、統計、排序、... ### 目錄結構 ``` blog/ # 項目根目錄 manage.py # 啓動控制代碼 requirements.txt # 依賴包類表文件 venv/ # 虛擬環境目錄 migrations/ # 數據庫遷移目錄 tests/ # 測試模塊目錄 app/ # 整個程序目錄 templates/ # 模板文件目錄 common/ # 通用模板 email/ # 郵件模板 。。。 static/ # 靜態文件目錄 img/ css/ js/ favicon.ico views/ # 藍本文件目錄 models.py # 數據模型文件 forms.py # 表單類文件 config.py # 配置文件 extensions.py # 擴展文件(存放全部擴展) email.py # 郵件發送功能函數 __init__.py # 包文件 ``` ### 項目準備 - 根據目錄結構,建立相關目錄及文件 - 書寫配置文件(就是書寫各類環境的配置類) - 使用工廠方法建立應用實例,並初始化配置 - 添加各類擴展(順便粘貼郵件發送函數) - 配置藍本(添加各類藍本文件,並註冊) - 項目基礎模板定製(順便添加消息閃爍及測試) ### 用戶管理 - 用戶註冊激活 - 在基礎模板中添加點擊跳轉的連接 - 在藍本中添加對應的視圖函數,渲染指定模板文件 - 建立用戶註冊的模板文件 - 設計用戶註冊表單類,在視圖函數中建立,而後模板文件中渲染 - 完成用戶註冊的校驗邏輯 - 設計用戶模型類,並完成遷移(別忘記在其餘文件中導入一次) - 用戶註冊及激活郵件的發送流程 - 用戶身份token的攜帶與解析 - 完整的用戶註冊激活流程 - 用戶登陸退出(flask-login) - 說明:flask-login是一個專門用來管理用戶登陸退出的擴展庫 - 安裝:`pip install flask-login` - 使用: ```python # 第一步:添加擴展 from flask_login import LoginManager login_manager = LoginManager() def config_extensions(app): ... login_manager.init_app(app) # 設置登陸端點 login_manager.login_view = 'user.login' # 設置登陸信息 login_manager.login_message = '請先登陸,而後才能訪問' # 第二步:繼承自UserMixin類(也能夠本身實現相關方法) from flask_login import UserMixin class User(UserMixin, db.Model): ... # 第三步:實現回調 @login_manager.user_loader def load_user(uid): return User.query.get(uid) ``` - 總結 ``` 狀態切換: login_user # 能夠提供記住個人功能 logout_user 狀態查詢: is_authenticated 登陸狀態 is_anonymous 匿名狀態 路由保護: login_required # 保護須要登陸才能訪問的路由 當前用戶: current_user # 哪裏均可以使用,在模板中不須要分配 ``` ### 練習 - 實現用戶信息的管理