在线问答系统

一、数据库功能分析

  • 用户可以登录及注册
  • 用户可以发问题(标题,内容)
  • 用户可以回答问题,关注问题
  • 用户可以评论回答,点赞回答

二、蓝图

什么是蓝图

大型应用组织管理

模块化,组件化

一个项目有多个蓝图

蓝图实现过程

  • 第一步 按模块拆分
    • ORM 模型,配置,常量,工具类,功能模块等
  • 第二步 视图文件中,实例化一个蓝图对象
    • accounts = Blueprint('accounts',__name__,template_folder='templates',static_folder='static')
  • 第三步 注册蓝图
    • from accounts.views import accounts
    • app.register_blueprint(accounts,url_prefix='/accounts'

2.1 在线问答系统蓝图改造

按模块进行改造

  • 将登录,注册,个人中心放入到新建的accounts模块中

                模块中新建templates文件夹和views.py文件

  • 将首页,问题详情页,关注页,写回答页放入到新建的qa模块中

                模块中新建templates文件夹和views.py文件

  • 将app.py中的路由放入各自的views.py中

                引入蓝图(Blueprint),实例化蓝图对象

                

accounts=Blueprint('accounts',__name__,template_folder='templates',static_folder='../assets')
  • 将蓝图在app.py 中注册

     

app.register_blueprint(accounts,url_prefix='/accounts')

三、问题详情动态页面开发

        第一步:使用模板语法将详情页改造

        第二步:将需要展示评论,关注的信息从数据库取出

        第三步:取出第一条回答,并展示出一共有多少条回答

四、登录注册

  • Flask模板,表单验证,多个字段的验证
  • 数据库操作
  • python 中 hashlib
  • Flask扩展的使用
  • Flask-login的使用
  • 用户登录的基本逻辑

4.1 用户注册页面开发

  • 注册表单编写及验证
  • 使用ORM保存用户信息
  • flash消息闪现提示用户登录

4.2 用户注册表单验证

  1. 用户名为手机号码,且不能重复 (正则验证)
  2. 昵称长度验证 (Length=(min=2,max=20) )
  3. 密码及确认密码 (Equal_To) 

        hashlib加密  hashlib.sha256().hexdigest()

4.3 登录流程分析

  • 登录表单输入用户名和密码
  • 验证用户名和密码是否正确,执行登录操作
  • 记录登录日志
  • 跳转到上一次访问的页面或首页

4.4 实现登录功能

五、问题发布功能开发

六、分页异步加载数据

API 应用程序接口 (对内部业务逻辑的封装)

  • 第一步:后端 视图层 编写数据接口
  • 第二步:前端 模板层 调用数据接口
  • 第三步:渲染页面、绑定功能

七、Flask-RESTFUL使用

restful的特点

  • 每一个url都是一种资源
  • 更纯净的url
  • 用不同的HTTP请求方式来操作它

                

类型描述
POST新增
GET查询
PUT/PATCH修改
DELETE删除

更精简的方式处理结果

状态码描述请求方式
200OKGET
201CREATEDPOST/PUT/PATCH
204NO CONTENTDELETE
400INVALID REQUESTPOST/PUT/PATCH
404NOT FOUND*
500INTERNAL SERVER ERROR*

八、添加回答

  • 构造回答表单
  • 保存表单数据到Answer中,将回答对话框变为富文本
  • 将回答提交到文章详情,并给Flash消息提示回答成功

九、首页回答列表

  • 在视图中准备数据(回答列表)
  • 在HTML模板中替换动态内容(列表循环)
  • 页面效果实现(概要信息显示及切换)
  • 分页的实现思路

十、答案评论功能开发

十一、评论及回复列表加载

  • 取评论列表数据,并循环改造
  • 计算创建时间和现在时间的差值  (timeago)
  • 评论下的回复列表

十二、异步加载评论列表

  • 分页取评论数据
  • 使用异步加载的方式更新评论信息
  • 给‘上一页’,‘下一页’绑定事件

十三、评论点赞功能开发

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值