概述

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

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

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

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

Screenshot


要求

  • 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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。