项目简介

NoteApp 是一个笔记软件,采用前后端分离的开发模式。

用户可以通过网页前端注册账户,并通过注册时的信息登录。 登录后可以看到自己创建的所有笔记(notes),同时支持新建、删除、编辑笔记。

Lab 3 的内容为实现一个 NoteApp 后端的简易版。

Lab 3 具体要求

后端的样例项目在 https://github.com/truc0/noteapp-lab/tree/v1. Lab 3 完成的标志是通过所有测试样例。

运行测试

测试代码全部位于 https://github.com/truc0/noteapp-lab/blob/v1/notes/tests.py. 如果需要用到该文件中定义的函数,建议复制到项目文件中(即不要引入tests.py)。

你可以通过以下命令运行测试:

1
python manage.py test

项目描述

该项目需要实现对 Note 的增删改查功能,输入和输出均使用json格式。

项目需要实现的API文档可以在openapi.yml里找到, 将其复制到Swagger中可以以可视化方式查看该文件。

Django中,你可以使用django.http.response.JsonResponse构造一个json格式的 Response。 在Lab 3中,你可能需要将list等类型不是dict的元素作为JsonResponse的第一个参数。 在这种情况下,Django会抛出一个异常,这是因为在ECMAScript 5标准之前,返回一个数组可能导致安全问题。 然而现在大多数浏览器已经支持更高版本的ECMAScript,所以在Lab 3中我们忽略此问题。

你可以在JsonResponse中将关键字参数safe赋值为False以防止Django抛出错误,具体实现如下。

1
2
3
def index(request):
    ...
    return JsonResponse([], safe=False)

扩展练习

这个练习十分简单,但是并不能被实际应用。

尝试使用自己编写的中间件(Middleware)解决CORSCSRF的问题。