后端实验指南

Lab02 后端基础 #

实验目的 #

  • 掌握 Python 基础代码
  • 了解 Django 框架,学习使用框架编写几个简单 API
  • 学习使用 Postman/ApiFox 请求工具测试后端 API

资源链接 #

https://bhpan.buaa.edu.cn:443/link/3A508B02D5CE20902AE2983009CE5D1B

Valid Until: 2023-07-15 23:59

实验指南 #

  1. 观看上述云盘链接中 Lab02/后端Django 目录下的视频教程
  2. 文字教程可查阅 Django入门教程Django入土教程
  3. 完成实验作业并于 3.25 日晚 12 点前提交至 软院云平台

实验作业 #

本次作业在提供的模板项目代码上修改完成,也可以自己新建项目,体验 Django 初始化项目的过程。

任务一 完善注册 #

请完善注册的API,实现以下功能:

  • 增加用户名格式检测,保证用户名由英文或数字组成:当请求用户名含其它字符时,返回 errno 为 1003,msg用户名不合法
  • 增加用户名检测,保证用户名不重复:当数据库里存在请求携带的用户名时,返回 errno 为 1004,msg用户名已存在
  • 增加密码检测,保证密码由8~18位字符组成,且需同时包含英文和数字:当密码不合法时,返回 errno 为 1005,msg密码不合法

注册API返回信息汇总:

情况errnomsg
成功0注册成功
请求方式不为POST1001请求方式错误
两次输入的密码不同1002两次输入的密码不同
用户名含除英文和数字以外的字符1003用户名不合法
用户名重复1004用户名已存在
密码不符合规则1005密码不合法

返回样例:

{
    "errno": 0,
    "msg": "注册成功"
}

任务二 新增“文章”表项 #

每次更改数据库模型都需要重新生成迁移文件 makemigrations & migrate

添加新的数据库表项——文章,用于存放用户发表的文章,其属性至少包含标题、描述信息、文章内容、创建时间、文章状态(包含审核中、已发布、审核失败),并能够体现与用户的关联关系(外键)。

任务三 新增“发布文章”API #

实现“发布文章”的API,满足用户发布文章的需求。

请严谨考虑发布文章的业务逻辑,包含用户登录信息验证、请求字段能否为空、用户发布文章后文章应处于哪一状态等,同时需规定好返回的错误码 errno 和描述信息 msg

任务四 新增“查看文章列表”API #

实现“查看文章列表”的API,满足:用户想查看自己处于某个状态的所有文章,该API能返回相应状态的文章列表。

返回的文章列表中,每个文章对象应包含:标题、描述信息、创建时间。

响应示例(可参考不强制):

{
    "errno": 0,
    "msg": "查询成功",
    "data": [
        {
            "title": "软件工程实用教程",
            "description": "北航软件工程基础课程参考教材",
            "create_time": "2023/3/25 15:32"
        },
        {
            "title": "计算机科学引论",
            "description": "北航计算机导论课程参考教材",
            "create_time": "2023/3/25 16:32"
        }
    ]
}

任务五 聪明的你帮助教改改Bug(不强制,写出来说明你是高手!Zhoues 认可的高手) #

背景:Zhoues助教看到群里有人说要把“相信你”改为“相信聪明的你”,便用VScode打开网站项目。正要添上“聪明的”这三个字,突然瞥到之前在 Django入门教程写的登录处理函数有点奇怪,便仔细端详了一下。果不其然,发现了bug。

任务:聪明的你,请思考一下处理登录请求的完整逻辑,肉眼帮助教找出 publish/views.py 中登录函数 login 的 Bug,并修改。

任务六 实验文档报告(不做要求) #

如果你仍感叹于后端之大,也沉醉于Web情话,可以在实验报告中唠一唠你的实现思路。当然如果你选择无感,也可以不写。

提交方式 #

  • 截止时间:2023/3/25 晚12点
  • 提交方式:软院云平台
  • 提交内容:实现上述任务功能后的项目代码文件夹,和实验报告(如果有的话),命名格式如下:
学号_姓名_第2次实验.zip
|-- 项目代码文件夹
`-- 学号_姓名_第2次实验_实验报告.docx/pdf(如果有的话)

完成本次后端作业后,相信聪明的你已经有能力开心地投入到大作业后端的开发中了~~