Lab02 后端基础 #
实验目的 #
- 掌握 Python 基础代码
- 了解 Django 框架,学习使用框架编写几个简单 API
- 学习使用 Postman 请求工具测试后端 API
资源链接 #
https://bhpan.buaa.edu.cn:443/link/2B8C3DF0CE32D21908D8007C843940A5
Valid Until: 2022-08-01 23:59
实验指南 #
- 观看上述云盘链接中 Lab02/后端Django 目录下的视频教程
- 文字教程可查阅 Django入门教程 和 Django入土教程
- 完成实验作业并于 3.27 日晚 12 点前提交至 软院云平台
实验作业 #
本次作业在提供的模板项目代码上修改完成,也可以自己新建项目,体验 Django 初始化项目的过程。
任务一 完善注册 #
请完善注册的API,实现以下功能:
- 增加用户名格式检测,保证用户名由英文或数字组成:当请求用户名含其它字符时,返回
errno
为 1003,msg
为用户名不合法
; - 增加用户名检测,保证用户名不重复:当数据库里存在请求携带的用户名时,返回
errno
为 1004,msg
为用户名已存在
; - 增加密码检测,保证密码由8~18位字符组成,且需同时包含英文和数字:当密码不合法时,返回
errno
为 1005,msg
为密码不合法
。
注册API返回信息汇总:
情况 | errno | msg |
---|---|---|
成功 | 0 | 注册成功 |
请求方式不为POST | 1001 | 请求方式错误 |
两次输入的密码不同 | 1002 | 两次输入的密码不同 |
用户名含除英文和数字以外的字符 | 1003 | 用户名不合法 |
用户名重复 | 1004 | 用户名已存在 |
密码不符合规则 | 1005 | 密码不合法 |
返回样例:
{
"errno": 0,
"msg": "注册成功"
}
任务二 新增“文章”表项 #
每次更改数据库模型都需要重新生成迁移文件makemigrations
&migrate
添加新的数据库表项——文章,用于存放用户发表的文章,其属性至少包含标题、描述信息、文章内容、创建时间、文章状态(包含审核中、已发布、审核失败),并能够体现与用户的关联关系(外键)。
任务三 新增“发布文章”API #
实现“发布文章”的API,满足用户发布文章的需求。
请严谨考虑发布文章的业务逻辑,包含用户登录信息验证、请求字段能否为空、用户发布文章后文章应处于哪一状态等,同时需规定好返回的错误码 errno
和描述信息 msg
。
任务四 新增“查看文章列表”API #
实现“查看文章列表”的API,满足:用户想查看自己处于某个状态的所有文章,该API能返回相应状态的文章列表。
返回的文章列表中,每个文章对象应包含:标题、描述信息、创建时间。
响应示例(可参考不强制):
{
"errno": 0,
"msg": "查询成功",
"data": [
{
"title": "软件工程实用教程",
"description": "北航软件工程基础课程参考教材",
"create_time": "2022/3/25 15:32"
},
{
"title": "计算机科学引论",
"description": "北航计算机导论课程参考教材",
"create_time": "2022/3/25 16:32"
}
]
}
任务五 聪明的你帮助教改改Bug(不强制) #
背景:Zewan助教看到群里有人说要把“相信你”改为“相信聪明的你”,便用VScode打开网站项目。正要添上“聪明的”这三个字,突然瞥到之前在 Django入门教程写的登录处理函数有点奇怪,便仔细端详了一下。果不其然,发现了bug。
任务:Super2021 聪明的你,请思考一下处理登录请求的完整逻辑,肉眼帮助教找出 publish/views.py
中登录函数 login
的 Bug,并修改。
突发奇想加个任务,一定不是我懒得改了
任务六 实验文档报告(不做要求) #
如果你仍感叹于后端之大,也沉醉于Web情话,可以在实验报告中唠一唠你的实现思路。当然如果你选择无感,也可以不写。
提交方式 #
- 截止时间:2022/3/27 晚12点
- 提交方式:软院云平台
- 提交内容:实现上述任务功能后的项目代码文件夹,和实验报告(如果有的话),命名格式如下:
学号_姓名_第2次实验.zip
|-- 项目代码文件夹
`-- 学号_姓名_第2次实验_实验报告.docx/pdf(如果有的话)
完成本次后端作业后,相信聪明的你已经有能力开心地投入到大作业后端的开发中了~~