跳转到主要内容

Django的Web API,易于使用。

项目描述

Django REST framework

build-status-image coverage-status-image pypi-version

出色的Web可浏览Web API。

项目的完整文档可在https://django-rest-framework.django.ac.cn/找到。


资金

REST 框架是一个共同资助的项目。如果您在商业上使用 REST 框架,我们强烈建议您通过订阅付费计划来投资其持续发展。

最初的目标是为 REST 框架提供一份全职职位。 每一个注册都将对实现这一点产生重大影响。

非常感谢我们所有的杰出赞助商,特别是我们的高级赞助商,包括SentryStreamSpacinovRetoolbit.ioPostHogCryptAPIFEZTOSvix


概述

Django REST framework 是一个用于构建 Web API 的强大且灵活的工具包。

您可能会选择使用 REST 框架的几个原因

以下可浏览 API 的截图

Screenshot


要求

  • Python 3.8+
  • Django 5.0, 4.2

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

安装

使用 pip 安装...

pip install djangorestframework

'rest_framework' 添加到您的 INSTALLED_APPS 设置中。

INSTALLED_APPS = [
    ...
    'rest_framework',
]

示例

让我们快速看一下使用 REST 框架构建一个简单的基于模型的 API,用于访问用户和组的例子。

启动一个新的项目...

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

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

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


# 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/,并查看您的新 'users' API。如果您使用右上角的 Login 控件,您还可以添加、创建和删除系统中的用户。

您还可以使用命令行工具(如 curl)与 API 交互。

$ 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://django-rest-framework.django.ac.cn/找到。

文档 & 支持

有关问题和支持,请使用REST 框架讨论组,或在 libera.chat IRC 的 #restframework 上。

请参阅安全策略

由以下支持