缙云做网站,公司备案号在哪里查询,廊坊网站建设电话,笨鸟网站开发使用Django REST framework构建RESTful API Django REST framework简介 安装Django REST framework 创建Django项目 创建Django应用 配置Django项目 创建模型 迁移数据库 创建序列化器 创建视图 配置URL 配置全局URL 配置认证和权限 测试API 使用Postman测试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_length100)author models.CharField(max_length100)published_date models.DateField()price models.DecimalField(max_digits5, decimal_places2)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(rbooks, 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的浏览界面。 使用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 Responseapi_view([GET])
def book_list(request):books Book.objects.all()serializer BookSerializer(books, manyTrue)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(detailBook 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(titleMy API,default_versionv1,descriptionTest description,terms_of_servicehttps://www.google.com/policies/terms/,contactopenapi.Contact(emailcontactmyapi.local),licenseopenapi.License(nameBSD License),),publicTrue,permission_classes(permissions.AllowAny,),
)urlpatterns [path(admin/, admin.site.urls),path(api/, include(myapp.urls)),path(swagger/, schema_view.with_ui(swagger, cache_timeout0), nameschema-swagger-ui),path(redoc/, schema_view.with_ui(redoc, cache_timeout0), nameschema-redoc),
]总结
通过本文你已经学习了如何使用Django REST framework构建RESTful API。我们介绍了Django REST framework的基本概念、安装方法、创建Django项目和应用、定义模型、创建序列化器、创建视图、配置URL、配置认证和权限、测试API、使用Postman测试API、分页、过滤和排序、自定义视图、异常处理、生成API文档等内容。掌握了这些知识将有助于你在实际工作中更好地利用Django REST framework来构建高效、可靠的Web API。 使用Django REST framework可以显著简化RESTful API的开发过程。