Django REST API – 使用DRF的CRUD
Django REST框架是用来非常容易和有效地创建网络API的。这是对Django框架的一个封装。在通过REST框架创建API之前有三个阶段,将Model的数据转换为JSON/XML格式(序列化),将这些数据渲染到视图中,创建一个用于映射到视图集的URL。
在本教程中,我们将讨论使用Django REST API的CRUD操作。它假定你熟悉Django基础知识–Django教程。
我们要建造什么
在本教程中,我们将为超市应用程序构建简单的REST API。这个商店包含各种食品、饮料和家用产品,被组织成各种类别。这些类别有子类别,子类别下有商品。每个商品都有一个价格,它可以被出售。现在我们应该能够使用DRF APIs从我们的数据库中添加、更新、查看和删除这些记录。
如何安装Django REST框架
要在Windows、Linux或任何操作系统上安装Django REST框架,需要pip包。要查看如何在你的操作系统上安装pip,请查看 – PIP安装 – Windows || Linux 。
现在,运行一个简单的命令。
安装完REST框架后,进入settings.py,在INSTALLED_APPS底部添加’rest_framework’。
更多信息请参考我们的文章Django REST框架安装。
创建应用
在安装了DRF并将其添加到settings.py中后,让我们使用命令创建一个应用程序–
一个名字为api的文件夹现在应该已经被注册了。
让我们把这个应用程序添加到INSTALLED_APPS和urls.py中。
In, settings.py,
现在,在urls.py中添加api urls。在GFG_REST.urls.py中。
现在让我们在我们的api文件夹中创建urls.py —
In api/urls.py
创建模型
现在让我们来创建我们的模型。我们将创建一个项目模型。这个模型将被API用来执行CRUD操作。
现在,在我们的应用程序准备好之后,让我们为我们的Item类创建序列化器。
序列化
Django REST框架中的序列化器将对象转换为javascript和前端框架能够理解的数据类型。序列化器还提供了反序列化功能,在首先验证了传入的数据后,允许将解析的数据转换回复杂的类型。最常用的两个主要序列化器是ModelSerializer和HyperLinkedModelSerialzer。
在本教程中,我们将使用ModelSerializer。如果你想知道更多关于手动创建序列化器的信息,那么请参考下面的文章——。
- 序列化器 – Django REST框架
- 序列化器中的超链接模型序列化器 – Django REST框架
ModelSerializer
ModelSerializer是在默认的序列化器之上的一个抽象层,它允许为Django中的模型快速创建一个序列化器。它提供了一个快捷方式,让你自动创建一个带有与模型字段对应的字段的序列器类。ModelSerializer类与普通的Serializer类是一样的,除了。
- 它将根据模型自动为你生成一组字段。
- 它将自动为序列化器生成验证器,例如唯一的验证器。
- 它包括.create()和.update()的简单默认实现。
现在,让我们在api文件夹中创建我们的serlializers.py文件,并添加以下代码 —
创建视图
为了将数据渲染到前端,并处理来自用户的请求,我们需要创建一个视图。在Django REST框架中,我们称这些为视图集,所以让我们在apis/views.py中创建一个视图。
在上面的代码中,api_view装饰器接受了一个HTTP方法的列表,这些方法是视图应该响应的。其他方法将以 “不允许的方法 “进行响应。
现在让我们更新我们的api/urls.py文件 –
现在让我们放开我们的服务器。运行以下命令 –
现在前往http://127.0.0.1:8000/api/
现在让我们通过API实现我们的CRUD操作。
Django Rest框架–创建视图
现在我们的创建视图将使用POST方法将数据插入我们的数据库中。让我们在views.py文件中创建我们的add_items函数。
现在让我们更新我们的urls.py文件,为我们刚刚创建的创建视图函数添加端点。
访问 http://127.0.0.1:8000/api/create/
Django Rest Framework – 列表视图
现在我们的列表视图将使用GET方法从数据库中获取数据。让我们在views.py文件中创建view_items函数。这个view_items函数将显示所有的数据或由用户根据类别、子类别或名称查询的过滤数据。
In views.py
In urls.py
现在访问http://127.0.0.1:8000/api/all/
这个视图功能还可以让我们按类别或子类别过滤。你可以使用以下任一网址,即http://127.0.0.1:8000/api/?category=category_name 或 http://127.0.0.1:8000/api/?subcategory=category_name,分别过滤类别和子类别。你也可以使用http://127.0.0.1:8000/api/all/?name=item_name 来搜索一个特定的项目。
如果我们访问http://127.0.0.1:8000/api/all/?category=food,我们的搜索结果将缩小到——。
Django Rest Framework – 更新视图
现在对于我们的更新视图函数,我们将使用POST方法。让我们在views.py文件中创建我们的update_items函数。这个视图函数将从数据库中更新一个特定的项目。它将在主键的帮助下过滤该项目。
In views.py
In urls.py
现在前往http://127.0.0.1:8000/api/all/?name=potato
Django Rest Framework – 删除视图
对于我们的删除视图函数,我们将使用DELETE方法。让我们在views.py文件中创建我们的delete_items函数。这个视图函数将从数据库中删除一个特定的项目。
In views.py
In urls.py
现在访问http://127.0.0.1:8000/api/item/pk/delete/。为了更好地理解,请看下面的GIF。