REST-фреймворк Django - мощный и гибкий инструментарий для создания веб-интерфейсов API

Некоторые причины, по которым вы можете захотеть использовать REST-фреймворк:

  • Web browsable API - это огромный выигрыш в удобстве использования для ваших разработчиков.

  • Политики аутентификации, включая пакеты для OAuth1a и OAuth2.

  • Сериализация, которая поддерживает как ORM, так и non-ORM источники данных.

  • Настраивается по всему пути - просто используйте обычные представления на основе функций, если вам не нужны более мощные функции.

  • Обширная документация, и great community support.

  • Используется и пользуется доверием всемирно признанных компаний, включая Mozilla, Red Hat, Heroku, и Eventbrite.


Финансирование

REST framework - это коллаборативно финансируемый проект. Если вы используете REST framework в коммерческих целях, мы настоятельно рекомендуем вам инвестировать в его дальнейшее развитие signing up for a paid plan.

Каждая регистрация помогает нам сделать REST framework долгосрочным и финансово устойчивым.

Большое спасибо wonderful sponsors, в особенности, Sentry, Stream, ESG, Rollbar, Cadre, Kloudless, Lights On Software, Retool, and bit.io


Требования

REST-фреймворк требует следующего:

  • Python (3.5, 3.6, 3.7, 3.8, 3.9)

  • Django (2.2, 3.0, 3.1, 3.2)

Мы настоятельно рекомендуем и официально поддерживаем только последние выпуски патчей каждой серии Python и Django.

Следующие пакеты являются необязательными:

  • PyYAML, uritemplate (5.1+, 3.0.0+) - Поддержка генерации схем.

  • Markdown (3.0.0+) - Поддержка Markdown для browsable API.

  • Pygments (2.4.0+) - Добавить подсветку синтаксиса в обработку Markdown.

  • django-filter (1.0.1+) - Поддержка фильтрации.

  • django-guardian (1.1.1+) - Поддержка разрешений на уровне объекта.

Установка

Установите с помощью pip, включая любые дополнительные пакеты, которые вы хотите…

pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

…или клонировать проект с github.

Добавьте 'rest_framework' к настройке INSTALLED_APPS.

INSTALLED_APPS = [
    ...
    'rest_framework',
]

Если вы планируете использовать API с возможностью просмотра, вы, вероятно, также захотите добавить представления входа и выхода из системы REST framework. Добавьте следующее в ваш корневой файл urls.py.

urlpatterns = [
    ...
    path('api-auth/', include('rest_framework.urls'))
]

Обратите внимание, что путь URL может быть любым, какой вы захотите.

Пример

Давайте рассмотрим быстрый пример использования REST-фреймворка для построения простого API с поддержкой модели.

Мы создадим API с функцией чтения-записи для доступа к информации о пользователях нашего проекта.

Все глобальные настройки для API REST-фреймворка хранятся в одном конфигурационном словаре с именем REST_FRAMEWORK. Начните с добавления следующего в ваш модуль settings.py:

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'
    ]
}

Не забудьте убедиться, что вы также добавили rest_framework к INSTALLED_APPS.

Теперь мы готовы к созданию нашего API. Вот корневой модуль нашего проекта urls.py:

from django.urls import path, include
from django.contrib.auth.models import User
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 an easy 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 в браузере по адресу http://127.0.0.1:8000/ и просмотреть новых «пользователей» API. Если вы используете элемент управления входом в систему в правом верхнем углу, вы также сможете добавлять, создавать и удалять пользователей из системы.

Быстрый старт

Не терпится приступить к работе? quickstart guide - это самый быстрый способ начать работу и создавать API с помощью REST framework.

Разработка

Смотрите Contribution guidelines для получения информации о том, как клонировать репозиторий, запустить набор тестов и внести изменения в REST Framework.

Поддержка

За поддержкой обращайтесь на REST framework discussion group, попробуйте воспользоваться каналом #restframework на irc.libera.chat, или задайте вопрос на Stack Overflow, обязательно включив тег :doc:`'django-rest-framework' <https://stackoverflow.com/questions/tagged/django-rest-framework>`__.

Для получения приоритетной поддержки, пожалуйста, подпишитесь на professional or premium sponsorship plan.

Безопасность

Если вы считаете, что нашли что-то в Django REST framework, что имеет последствия для безопасности, пожалуйста, не поднимайте этот вопрос на публичном форуме.

Отправьте описание проблемы по электронной почте на адрес rest-framework-security@googlegroups.com. Сопровождающие проекта будут работать с вами, чтобы решить все проблемы, если потребуется, до публичного раскрытия информации.

Лицензия

Авторское право © 2011-настоящее время, Encode OSS Ltd. Все права защищены.

Распространение и использование в исходной и двоичной формах, с изменениями или без них, разрешено при соблюдении следующих условий:

  • При повторном распространении исходного кода должно быть сохранено вышеуказанное уведомление об авторских правах, данный список условий и следующий отказ от ответственности.

  • Перераспределения в двоичной форме должны воспроизводить вышеуказанное уведомление об авторских правах, данный список условий и следующий отказ от ответственности в документации и/или других материалах, предоставляемых вместе с дистрибутивом.

  • Ни имя владельца авторских прав, ни имена его авторов не могут быть использованы для поддержки или продвижения продуктов, полученных с помощью данного программного обеспечения, без специального предварительного письменного разрешения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПРАВООБЛАДАТЕЛЯМИ И СОАВТОРАМИ «КАК ЕСТЬ», И ОТ ЛЮБЫХ ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ ТОВАРНОГО СОСТОЯНИЯ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, ОТКАЗЫВАЮТСЯ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ УЧАСТНИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ОБРАЗЦОВЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ (ВКЛЮЧАЯ, В ЧАСТНОСТИ, ПРИОБРЕТЕНИЕ ЗАПАСНЫХ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЮ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРЫВАНИЕ ДЕЛОВОЙ АКТИВНОСТИ), ЧЕМ БЫ ОНИ НИ БЫЛИ ВЫЗВАНЫ И НА ОСНОВАНИИ ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, БУДЬ ТО КОНТРАКТ, СТРОГАЯ ОТВЕТСТВЕННОСТЬ ИЛИ ПРАВОНАРУШЕНИЕ (ВКЛЮЧАЯ ХАЛАТНОСТЬ ИЛИ ИНОЕ), ВОЗНИКШИЕ КАКИМ-ЛИБО ОБРАЗОМ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ ОНИ БЫЛИ ПРЕДУПРЕЖДЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

Вернуться на верх