• 博客项目需求分析


    # 博客项目
    
    ### 需求分析
    
    - 用户注册登录
    - 用户信息管理
    - 博客发表回复
    - 博客列表展示
    - 博客分页展示
    - 博客收藏
    - 搜索、统计、排序、...
    
    ### 目录结构
    
    ```
    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        # 哪里都可以使用,在模板中不需要分配
        ```
    
      ### 练习
    
      - 实现用户信息的管理
  • 相关阅读:
    Oracle 按一行里某个字段里的值分割成多行进行展示
    Property or method "openPageOffice" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by
    SpringBoot 项目启动 Failed to convert value of type 'java.lang.String' to required type 'cn.com.goldenwater.dcproj.dao.TacPageOfficePblmListDao';
    Maven 设置阿里镜像
    JS 日期格式化,留作参考
    JS 过滤数组里对象的某个属性
    原生JS实现简单富文本编辑器2
    Chrome控制台使用详解
    android权限(permission)大全
    不借助第三方网站四步实现手机网站转安卓APP
  • 原文地址:https://www.cnblogs.com/liangliangzz/p/10222039.html
Copyright © 2020-2023  润新知