对Django的restful用法详解(自带的增删改查)
在Django中,可以使用Django Rest Framework (DRF)作为开发RESTful API的工具。DRF提供了一组用于快速构建API的工具,可帮助开发人员遵守RESTful原则。DRF具有自带的增删改查功能,可以非常方便地自动生成API,本文将详细介绍如何使用Django和DRF实现RESTful API的增删改查功能。
安装和配置DRF
要使用DRF,需要先安装它。可以通过pip命令进行安装,具体命令如下:
pip install djangorestframework
安装DRF后,需要将其添加到Django项目的INSTALLED_APPS中:
INSTALLED_APPS = [
#...
'rest_framework', \# 添加rest_framework应用程序
]
在项目的urls.py文件中添加以下代码,配置rest_framework所需的URL
from django.urls import include
from rest_framework import routers
from . import views
router = routers.DefaultRouter() # 定义路由器
router.register(r'todos', views.TodoViewSet) # 将TodoViewSet添加到路由器中
urlpatterns = [
path('', include(router.urls)), # 将路由器的URL添加到Django的URL组
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')) # 添加DRF的默认认证和权限URL
]
创建序列化器
序列化器是DRF的一个关键部分,其作用是将模型转换为序列化的JSON数据。 在本示例中,首先需要定义一个Todo模型,并创建TodoSerializer类将其序列化为JSON。
from rest_framework import serializers
from .models import Todo # 引入Todo模型
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
fields = ['id', 'title', 'description', 'completed', 'created_at']
read_only_fields = ['id', 'created_at'] # 将id和created_at设置为只读
创建视图
视图是DRF中另一个关键组件,其作用是处理请求并返回响应。 在本例中,我们创建了一个TodoViewSet视图集,它提供了标准的RESTful行为 - 列出,检索,创建,更新和删除。
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response
from .models import Todo
from .serializers import TodoSerializer
class TodoViewSet(viewsets.ModelViewSet):
queryset = Todo.objects.all()
serializer_class = TodoSerializer
@action(detail=True, methods=['post'])
def complete(self, request, pk=None):
todo = self.get_object()
todo.completed = True
todo.save()
serializer = self.get_serializer(todo)
return Response(serializer.data)
示例1:创建Todo
1.发出POST请求:
curl -H "Content-Type: application/json" -X POST -d '{"title": "Test Todo", "description": "This is a test todo list item."}' http://localhost:8000/todos/
2.JSON格式的响应:
{
"id": 1,
"title": "Test Todo",
"description": "This is a test todo list item.",
"completed": false,
"created_at": "2021-08-09T00:00:00Z"
}
示例2:更新Todo
1.发出PUT请求:
curl -H "Content-Type: application/json" -X PUT -d '{"title": "Test Todo - Updated", "description": "This is an updated test todo list item.", "completed": true}' http://localhost:8000/todos/1/
2.JSON格式的响应:
{
"id": 1,
"title": "Test Todo - Updated",
"description": "This is an updated test todo list item.",
"completed": true,
"created_at": "2021- 08-09T00:00:00Z"
}
总结
本文介绍了如何使用Django和DRF创建RESTful API。 首先,我们安装并配置了DRF,然后创建了一个序列化器并定义了一个视图集。 最后,通过示例说明使用DRF的自带增删改查功能。 DRF提供了很多其他功能,如分页,搜索,过滤器等。 要使用它们,只需要添加适当的设置即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对Django的restful用法详解(自带的增删改查) - Python技术站