|
|
@ -0,0 +1,76 @@ |
|
|
|
## 云计算期末作业 ## |
|
|
|
|
|
|
|
以下为云计算期末作业的readme |
|
|
|
|
|
|
|
### 前提依赖 ### |
|
|
|
|
|
|
|
本项目在win下开发,基本上只使用原生python包。实际测试,centos平台,只需要安装python36和flask即可运行。 |
|
|
|
|
|
|
|
bootstrap文件在静态文件夹内,jquery和sweetalert2采用cdn直接联网加载。 |
|
|
|
|
|
|
|
### 运行 ### |
|
|
|
|
|
|
|
python backend.py |
|
|
|
|
|
|
|
访问127.0.0.1:5000.(可能需要在app.run()内修改) |
|
|
|
|
|
|
|
### 目录结构 ### |
|
|
|
|
|
|
|
- template 存放flask所需要渲染的html文件 |
|
|
|
- backend.py 后端程序,程序开头有部分常量定义 |
|
|
|
- form.js 前端js文件 |
|
|
|
- static 静态文件夹,放bootstrap和css样式库 |
|
|
|
- bin文件夹 存放上传的文件,存放在对应文件夹内 |
|
|
|
- homeworkMetadata.xml和studentlist.csv 两个辅助存储信息的文件,分别为作业和学生名单。 |
|
|
|
|
|
|
|
### 主要功能 ### |
|
|
|
|
|
|
|
服务器运行后,主要提供两个功能。 |
|
|
|
|
|
|
|
- `/`根目录负责提交文件。 |
|
|
|
- `/admin/login`负责管理员登陆。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 学生端 ### |
|
|
|
|
|
|
|
#### 上传文件 #### |
|
|
|
上传的文件会同一的命名,文件名带时间,所以多次提交会保留。 |
|
|
|
|
|
|
|
|
|
|
|
### 管理员端 ### |
|
|
|
|
|
|
|
#### token #### |
|
|
|
访问和管理员相关的网页都需要token。在login登陆后会在session内存入token(也就是关掉标签页会需要重新登陆)。这是因为,由于技术有限,所以所有的admin操作均在一个标签页内,通过ajax来进行不刷新跳转。 |
|
|
|
|
|
|
|
token验证写在backend文件开头部分的log_require装饰器内。 |
|
|
|
|
|
|
|
#### 账号和密码 #### |
|
|
|
|
|
|
|
admin账号和密码是硬编码在backend文件中,在backend文件login函数内。默认账号名admin,密码123456。 |
|
|
|
|
|
|
|
#### 前后端交互 #### |
|
|
|
|
|
|
|
本项目的后端数据传递到前端,采用数据注入,即flask渲染html时直接注入数据。所以如需改变前端数据,请直接修改template文件内html文件。 |
|
|
|
前端到后端采用ajax,部分跳转功能实习是通过直接拉去html到本地并覆盖实现。 |
|
|
|
|
|
|
|
比如查看提交情况,就是直接比对上传文件夹和学生名单,然后将信息直接注入homework.html文件内。 |
|
|
|
|
|
|
|
#### 作业xml #### |
|
|
|
根节点为homeworks,子节点为homework。 |
|
|
|
homework有三个属性,名字,deadline和描述。 |
|
|
|
|
|
|
|
#### 学生列表 #### |
|
|
|
|
|
|
|
存放在本地的csv文件,两列,学号和姓名。 |
|
|
|
|
|
|
|
admin内的导入功能是直接覆盖。 |
|
|
|
|
|
|
|
#### bin文件夹 #### |
|
|
|
为了安全考虑,backend内没有在删除homework条目时删除对应bin文件夹内文件夹,请手动删除。同时这里的文件夹异常检验(有条目但没有文件夹)没有写,手动删除文件夹可能导致异常,请注意。 |
|
|
|
|
|
|
|
|
|
|
|
#### 模板html #### |
|
|
|
采用flask语法。 |
|
|
|
|
|
|
|
其中最重要的展示提交情况就是传入了一个提交情况的列表。 |