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

使用Django REST framework构建RESTful API

使用Django REST framework构建RESTful API

      • Django REST framework简介
      • 安装Django REST framework
      • 创建Django项目
      • 创建Django应用
      • 配置Django项目
      • 创建模型
      • 迁移数据库
      • 创建序列化器
      • 创建视图
      • 配置URL
      • 配置全局URL
      • 配置认证和权限
      • 测试API
      • 使用Postman测试API
      • 分页
      • 过滤和排序
      • 自定义视图
      • 异常处理
      • 文档
      • 总结

Django REST framework (DRF) 是一个功能强大的工具包,用于构建Web API。它与Django框架无缝集成,提供了许多开箱即用的功能,如序列化、认证、权限、分页和视图等。本文将详细介绍如何使用Django REST framework构建RESTful API。

Django REST framework简介

Django REST framework 是一个用于构建Web API的框架,它旨在使构建API变得简单和快速。DRF提供了许多强大的功能,如自动化的API浏览界面、序列化器、视图集、路由等。

安装Django REST framework

首先,需要安装Django和Django REST framework。

pip install django djangorestframework

创建Django项目

使用Django创建一个新的项目。

django-admin startproject myproject
cd myproject

创建Django应用

在项目中创建一个新的应用。

python manage.py startapp myapp

配置Django项目

在项目的 settings.py文件中,添加 rest_framework和新创建的应用到 INSTALLED_APPS列表中。

INSTALLED_APPS = [# ...'rest_framework','myapp',
]

创建模型

models.py文件中定义一个简单的模型。

from django.db import modelsclass Book(models.Model):title = models.CharField(max_length=100)author = models.CharField(max_length=100)published_date = models.DateField()price = models.DecimalField(max_digits=5, decimal_places=2)def __str__(self):return self.title

迁移数据库

运行迁移命令以创建数据库表。

python manage.py makemigrations
python manage.py migrate

创建序列化器

serializers.py文件中创建一个序列化器。

from rest_framework import serializers
from .models import Bookclass BookSerializer(serializers.ModelSerializer):class Meta:model = Bookfields = ['id', 'title', 'author', 'published_date', 'price']

创建视图

views.py文件中创建视图。

from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializerclass BookViewSet(viewsets.ModelViewSet):queryset = Book.objects.all()serializer_class = BookSerializer

配置URL

urls.py文件中配置URL路由。

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSetrouter = DefaultRouter()
router.register(r'books', BookViewSet)urlpatterns = [path('', include(router.urls)),
]

配置全局URL

在项目的 urls.py文件中包含应用的URL配置。

from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('api/', include('myapp.urls')),
]

配置认证和权限

settings.py文件中配置认证和权限。

REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': ['rest_framework.authentication.SessionAuthentication','rest_framework.authentication.BasicAuthentication',],'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAuthenticated',],
}

测试API

启动Django开发服务器,访问API。

python manage.py runserver

打开浏览器,访问http://127.0.0.1:8000/api/books/,可以看到API的浏览界面。
Django REST framework API浏览界面示例

使用Postman测试API

可以使用Postman等工具来测试API的各个端点。

分页

settings.py文件中配置分页。

REST_FRAMEWORK = {'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination','PAGE_SIZE': 10
}

过滤和排序

views.py文件中配置过滤和排序。

from rest_framework import filtersclass BookViewSet(viewsets.ModelViewSet):queryset = Book.objects.all()serializer_class = BookSerializerfilter_backends = [filters.SearchFilter, filters.OrderingFilter]search_fields = ['title', 'author']ordering_fields = ['published_date', 'price']

自定义视图

可以创建自定义视图来处理特定的业务逻辑。

from rest_framework.decorators import api_view
from rest_framework.response import Response@api_view(['GET'])
def book_list(request):books = Book.objects.all()serializer = BookSerializer(books, many=True)return Response(serializer.data)

异常处理

views.py文件中配置异常处理。

from rest_framework.exceptions import NotFoundclass BookViewSet(viewsets.ModelViewSet):queryset = Book.objects.all()serializer_class = BookSerializerdef retrieve(self, request, *args, **kwargs):try:return super().retrieve(request, *args, **kwargs)except Http404:raise NotFound(detail='Book not found')

文档

可以使用Swagger或Redoc等工具生成API文档。

pip install drf-yasg

urls.py文件中配置Swagger。

from django.urls import path, include
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapischema_view = get_schema_view(openapi.Info(title='My API',default_version='v1',description='Test description',terms_of_service='https://www.google.com/policies/terms/',contact=openapi.Contact(email='contact@myapi.local'),license=openapi.License(name='BSD License'),),public=True,permission_classes=(permissions.AllowAny,),
)urlpatterns = [path('admin/', admin.site.urls),path('api/', include('myapp.urls')),path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
]

总结

通过本文,你已经学习了如何使用Django REST framework构建RESTful API。我们介绍了Django REST framework的基本概念、安装方法、创建Django项目和应用、定义模型、创建序列化器、创建视图、配置URL、配置认证和权限、测试API、使用Postman测试API、分页、过滤和排序、自定义视图、异常处理、生成API文档等内容。掌握了这些知识,将有助于你在实际工作中更好地利用Django REST framework来构建高效、可靠的Web API。
使用Postman测试Django REST framework API示例

使用Django REST framework可以显著简化RESTful API的开发过程。

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

相关文章:

  • 「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle 和 Checkbox 组件
  • Kotlin协程suspend的理解
  • 基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发
  • 51单片机教程(二)- 创建项目
  • Rust 图形界面开发——使用 GTK 创建跨平台 GUI
  • Hellinger Distance(赫林格距离)
  • 【系统架构设计师】七、设计模式
  • 新工具可绕过 Google Chrome 的新 Cookie 加密系统
  • 模型拆解(三):EGNet、FMFINet、MJRBM
  • 齐次线性微分方程的解的性质与结构
  • Python-Celery-基础用法总结-安装-配置-启动
  • vue中的nextTick() - 2024最新版前端秋招面试短期突击面试题【100道】
  • 5G学习笔记三之物理层、数据链路层、RRC层协议
  • Ubuntu 通过Supervisor 或者 systemd 管理 .Net应用
  • 超好用的视频剪辑软件分享:10款剪辑软件推荐
  • 5G三大应用场景中的URLLC
  • PyMOL中常用的命令列表
  • 坏块处理 ORA-01578: ORACLE data block corrupted (file # 3, block # 152588)
  • 像`npm i`作为`npm install`的简写一样,使用`pdm i`作为`pdm install`的简写
  • DNS域名解析服务器--RHCE
  • 数据库物化视图的工作原理与Java实现
  • 炫酷的登录框!(附源码)
  • 使用Python实现智能生态系统监测与保护的深度学习模型
  • Rust 力扣 - 54. 螺旋矩阵
  • Flutter 简述(1)
  • BGP实验--BGP路由反射器
  • 域渗透-域环境部署
  • 【Oracle】空格单字符通配符查询匹配失败
  • uniapp实现中间平滑凸起tabbar
  • 【视频】OpenCV:识别颜色、绘制轮廓