博客項目需求分析

# 博客項目

### 需求分析

- 用戶註冊登陸
- 用戶信息管理
- 博客發表回覆
- 博客列表展現
- 博客分頁展現
- 博客收藏
- 搜索、統計、排序、...

### 目錄結構

```
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        # 哪裏均可以使用,在模板中不須要分配
    ```

  ### 練習

  - 實現用戶信息的管理
相關文章
相關標籤/搜索