当前位置: 首页 > news >正文

第11天:API开发与REST framework

第11天:API开发与REST framework

目标

使用Django REST framework构建RESTful API。

任务概览
  1. 学习序列化器的概念和使用方法。
  2. 创建API视图和路由。
  3. 实现API的权限和认证。
详细步骤
1. 学习序列化器

序列化器是Django REST framework中用于数据转换的组件,能够将模型实例转换为Python数据类型,也可以将传入的数据反序列化并保存为模型实例。

创建一个序列化器示例

# myproject/myapp/serializers.pyfrom rest_framework import serializers
from .models import MyModelclass MyModelSerializer(serializers.ModelSerializer):class Meta:model = MyModelfields = '__all__'  # 序列化模型的所有字段
2. 创建API视图

Django REST framework提供了多种视图集和视图类来简化API的创建。

  • 视图集:例如ListCreateAPIViewRetrieveUpdateDestroyAPIView等,用于处理CRUD操作。
# myproject/myapp/views.pyfrom rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializerclass MyModelViewSet(viewsets.ModelViewSet):queryset = MyModel.objects.all()serializer_class = MyModelSerializer
  • 路由:使用routers模块来自动创建路由。
# myproject/myapp/urls.pyfrom django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import MyModelViewSetrouter = DefaultRouter()
router.register(r'mymodels', MyModelViewSet)urlpatterns = [path('', include(router.urls)),
]
3. 实现API的权限和认证

Django REST framework提供了多种认证和权限类来控制API的访问。

  • 认证:例如TokenAuthenticationSessionAuthentication等。

settings.py中添加认证类:

REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': ['rest_framework.authentication.TokenAuthentication',],
}
  • 权限:例如IsAuthenticatedIsAdminUserIsAuthenticatedOrReadOnly等。

在视图中设置权限类:

class MyModelViewSet(viewsets.ModelViewSet):queryset = MyModel.objects.all()serializer_class = MyModelSerializerpermission_classes = [permissions.IsAuthenticatedOrReadOnly]
学习要点
  • 理解序列化器的概念和使用方法。
  • 学会创建API视图和路由。
  • 掌握实现API的权限和认证。
每日回顾
  • 确保序列化器能够正确序列化和反序列化数据。
  • 测试API视图是否按预期工作。
  • 验证权限和认证是否正常。

通过今天的学习,你应该能够使用Django REST framework构建RESTful API,并了解序列化器、视图、路由、权限和认证的使用方法。明天,我们将学习如何过滤和分页API数据,以及如何自定义API的响应格式,进一步提升API的可用性和灵活性。

http://www.lryc.cn/news/379193.html

相关文章:

  • 2024 年解锁 Android 手机的 7 种简便方法
  • 利用机器学习重构视频中的人脸
  • 2021数学建模C题目– 生产企业原材料的订购与运输
  • C# OpenCvSharp 图像复制-clone、copyTo
  • 中国投入到终止遗传性疾病的战斗
  • PCL common中常见的基础功能函数
  • 力扣每日一题 6/22 字符串/贪心
  • MCT Self-Refine:创新集成蒙特卡洛树搜索 (MCTS)提高复杂数学推理任务的性能,超GPT4,使用 LLaMa-3 8B 进行自我优化
  • 自制HTML5游戏《开心消消乐》
  • 【C++】平衡二叉树(AVL树)的实现
  • 第一百一十八节 Java面向对象设计 - Java接口
  • Flink nc -l -p 监听端口测试
  • 在IntelliJ IDEA中使用Spring Boot:快速配置
  • django filter 批量修改
  • maven:中央仓库验证方式改变:401 Content access is protected by token
  • 【面试】http
  • 获取泛型,泛型擦除,TypeReference 原理分析
  • springboot 3.x 之 集成rabbitmq实现动态发送消息给不同的队列
  • C++ 代码实现鼠标右键注册菜单,一级目录和二级目录方法
  • SQLite 3 优化批量数据存储操作---事务transaction机制
  • [程序员] 表达的能力
  • rknn转换后精度差异很大,失真算子自纠
  • 【C语言】解决C语言报错:Stack Overflow
  • 【滚动哈希 二分查找】1044. 最长重复子串
  • webid、sec_poison_id、a1、web_session参数分析与算法实现
  • Qt|QWebSocket与Web进行通讯,实时接收语音流
  • 「51媒体」电视台媒体邀约采访报道怎么做?
  • Python提取PDF文本和图片,以及提前PDF页面中指定矩形区域的文本
  • C#实现边缘锐化(图像处理)
  • ffmpeg windows系统详细教程