Django-rest-framework 一个强大而灵活的Django WebAPI的工具包

概述

DjangoREST框架是一个强大而灵活的构建WebAPI的工具包

您可能希望使用睡觉框架的一些原因:

有一个用于测试目的的实时示例API,available here

下面来自可浏览API的屏幕截图


要求

  • Python(3.5、3.6、3.7、3.8、3.9)
  • Django(2.2,3.0,3.1,3.2)

我们强烈推荐并且仅官方支持每个Python和Django系列的最新补丁版本

安装

使用以下方式安装pip

pip install djangorestframework

添加'rest_framework'致您的INSTALLED_APPS设置

INSTALLED_APPS = [
    ...
    'rest_framework',
]

示例

让我们来看一个使用睡觉框架构建用于访问用户和组的简单模型支持的应用编程接口的快速示例

像这样启动一个新项目

pip install django
pip install djangorestframework
django-admin startproject example .
./manage.py migrate
./manage.py createsuperuser

现在编辑example/urls.py项目中的模块:

from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import serializers, viewsets, routers

# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff']


# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer


# Routers provide a way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)


# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

我们还想为我们的API配置几个设置

将以下内容添加到您的settings.py模块:

INSTALLED_APPS = [
    ...  # Make sure to include the default installed apps here.
    'rest_framework',
]

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
    ]
}

就这样,我们完了!

./manage.py runserver

现在,您可以在浏览器中打开API,地址为http://127.0.0.1:8000/,并查看新的“用户”API。如果您使用Login控件,您还可以在系统中添加、创建和删除用户

您还可以使用命令行工具与API交互,例如curl例如,要列出用户端点,请执行以下操作:

$ curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
[
    {
        "url": "http://127.0.0.1:8000/users/1/",
        "username": "admin",
        "email": "admin@example.com",
        "is_staff": true,
    }
]

或创建新用户:

$ curl -X POST -d username=new -d email=new@example.com -d is_staff=false -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
{
    "url": "http://127.0.0.1:8000/users/2/",
    "username": "new",
    "email": "new@example.com",
    "is_staff": false,
}

文档和支持

有关该项目的完整文档,请访问https://www.django-rest-framework.org/

有关问题和支持,请使用REST framework discussion group,或#restframework关于Freenode IRC

您可能还想要follow the author on Twitter

安全性

请参阅security policy