EasyQuestionnaire-backend
EasyQuestionnaire-backend copied to clipboard
😋EasyQuestionnaire-backend
EasyQuestionnaire-backend
2020-8-17更新
一直没有时间重构这个项目(当前版本可以正常使用,但是已经有了一些优化的思路), 等过一段时间空了再来处理吧,我大概描述一下我准备去做的一个优化方案,供参考:
服务端:
-
服务端还是采用mongodb这个nosql数据库(其实说它是个关系型数据库也不为过~),当然,mysql当然也是一个不错的选择,各有各的好处。
-
问卷提交的过程处理:
-
数据处理: 如果使用mongodb(例如本项目),数据的插入是非常方便的,但是如果严谨些,需要考虑数据格式验证的问题,如果使用mysql,结合json格式的字段,那么处理起来也不会太难。
-
数据统计: 当前本项目的数据统计是直接通过调取接口 -- 查表 -- 进行计算的,个人用用的小项目还可以,但是如果数据量一大(例如某个问卷的问题很多),那么就会出现大量查表计算的情况,这个可能比较耗时,我们可以:
-
采用redis缓存,每次用户填写完表单,服务端返回给用户200之后,后台重新计算表单统计信息,同步存入redis和db,这样问卷发布者调取数据分析接口之后只需要从redis获取统计数据即可,速度非常快
-
另外, 我们可以不用redis,而是另建立一张数据统计表来处理上述问题吗?具体思路是每次用户完成提交后,后台更新数据统计表的信息,这样就不用查多个表进行大量计算,只需要查数据统计表就可以了 。这可能不是一个好的选择 ,因为我们需要保证数据一致性,试想:问卷发布者删除/修改一个题目/选项顺序,那么这张数据统计表就必须更新了,此时再来更新数据统计表就会出现麻烦了。
-
-
前端:
- 前端可以在当前的基础上封装一个表单编辑器组件,约定好数据结构,这个编辑器不仅仅能够支持问卷,还可以支持考试、业务表单办理等功能。
- 准备拥抱vue3、typescript
2020-6-5 更新
旧的部署方法不推荐了!!!因为略显麻烦,且一不小心容易出错,强烈建议使用docker,轻松、快速部署本项目,满满的幸福感~,请查看项目目录下的flask部署总结笔记查看具体方法~
此项目是问卷调查平台的后端项目 基于Python的flask框架
API接口文档 https://www.showdoc.cc/EasyQuestionnaire
api测试地址 https://yuzzl.top
前端项目请移步:
(web端) https://github.com/yuzhanglong/EasyQuestionnaire-web
(小程序端) https://github.com/yuzhanglong/EasyQuestionnaire-MiniProgram
项目结构
questionnaire-back
├─ .gitignore
├─ README.md
├─ app
│ ├─ api // 接口相关
│ │ ├─ utilsApi.py
│ │ ├─ v1
│ │ │ ├─ users.py
│ │ │ ├─ utils.py
│ │ │ ├─ __init__.py
│ │ │ ├─ analysis.py
│ │ │ ├─ completes.py
│ │ │ └─ questionnaires.py
│ │ ├─ error // 全局错误处理
│ │ │ ├─ exceptions.py
│ │ │ ├─ baseHandler.py
│ │ │ └─ errorHandler.py
│ ├─ utils // 工具相关
│ │ ├─ emailtools.py
│ │ ├─ placeFinder.py
│ │ ├─ templateMaker
│ │ │ ├─ spiders
│ │ │ │ ├─ spider.py
│ │ │ │ └─ wenjuanwang.py
│ │ │ └─ templateMaker.py
│ │ ├─ auth
│ │ │ ├─ auth.py
│ │ │ └─ authHelp.py
│ │ ├─ betterPrint
│ │ │ └─ betterPrint.py
│ │ ├─ timeHelper
│ │ │ └─ timeHelper.py
│ │ ├─ qrCode.py
│ │ └─ dataCalculate.py
│ ├─ static // 静态资源
│ ├─ config // 配置相关
│ │ ├─ database.py
│ │ └─ baseConfig.py
│ ├─ models // 模型
│ │ ├─ user.py
│ │ ├─ problem.py
│ │ ├─ complete.py
│ │ ├─ resolution.py
│ │ ├─ questionnaire.py
│ │ └─ basicInfo.py
│ ├─ validators // 表单验证相关
│ │ ├─ base.py
│ │ ├─ forms.py
│ │ └─ completeForm.py
│ ├─ __init__.py
│ └─ extensions.py // flask扩展
├─ requirements.txt
├─ gunicorn.py
├─ questionnaire.conf
├─ flask部署总结笔记.md
├─ manage.py
安装(开发环境)
进入安装目录
cd /安装目录
clone项目
git clone https://github.com/yuzhanglong/EasyQuestionnaire-backend.git
进入程序目录
cd /程序目录
创建虚拟环境
virtualenv venv
进入虚拟环境
source venv/bin/activate
安装依赖
pip install -r requirements.txt