Django REST framework - это мощный и гибкий набор инструментов для создания Web API.
Некоторые причины, по которым вы можете захотеть использовать REST framework:
- Web-интерфейс API - огромный выигрыш в удобстве использования для ваших разработчиков.
- Политики аутентификации, включая пакеты для OAuth1a и OAuth2.
- Сериализация, поддерживающая как ORM, так и non-ORM источники данных.
- Настраивается все - просто используйте обычные представления на основе функций, если вам не нужны более мощные возможности.
- Обширная документация и отличная поддержка сообщества.
- Используется и пользуется доверием всемирно известных компаний, включая Mozilla, Red Hat, Heroku и Eventbrite.
REST framework требует следующего:
- Django (4.2, 5.0, 5.1)
- Python (3.8, 3.9, 3.10, 3.11, 3.12, 3.13)
Мы настоятельно рекомендуем и официально поддерживаем только последние выпуски патчей каждой версии Python и Django.
Следующие пакеты являются необязательными:
- PyYAML, uritemplate (5.1+, 3.0.0+) - Поддержка генерации схем.
- Markdown (3.3.0+) - Поддержка Markdown для Web-интерфейса API.
- Pygments (2.7.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.
git clone https://github.com/encode/django-rest-framework
Добавьте 'rest_framework'
в настройку INSTALLED_APPS
.
INSTALLED_APPS = [
...
'rest_framework',
]
Если вы планируете использовать Web-интерфейс 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 - это самый быстрый способ начать работу и создавать API с помощью REST framework.
Руководство проведет вас через все этапы настройки DRF. Это займет не очень много времени, однако вы получите полное понимание того, как все компоненты работают друг с другом и данное руководство крайне рекомендовано к прочтению.
- Сериализация
- Запросы-ответы
- Представления-классы
- Аутентификация/права доступа
- Отношения и связи
- Наборы представлений и роутеры
Так же есть пример работающего API законченного руководства для тестовых целей, доступен здесь.
Навигатор по API - исчерпывающее руководство по всему функционалу, предоставляемому DRF.
- Запросы
- Ответы
- Представления
- Общие представления
- Viewsets
- Маршрутизаторы
- Парсеры
- Рендереры
- Сериализаторы
- Поля сериализатора
- Отношения сериализаторов
- Валидаторы
- Аутентификация
- Разрешения
- Кэширование
- Дросселирование
- Фильтрация
- Пагинация
- Версионирование
- Согласование контента
- Метаданные
- Schemas
- Cуффиксы формата
- Возвращение URL-адресов
- Исключения
- Коды состояния
- Тестирование
- Настройки
Основные руководства для использующих DRF.
- AJAX, CSRF & CORS
- The Browsable API
- Улучшения в браузере
- Документирование вашего API
- HTML и формы
- Интернационализация
- REST, гипермедиа и HATEOAS
- Вложенные сериализаторы с возможностью записи
Смотрите руководство для разработчиков для получения информации о том, как клонировать репозиторий, запустить набор тестов и внести изменения в REST Framework.
За поддержкой обращайтесь в REST framework discussion group, попробуйте использовать канал #restframework
на irc.libera.chat
, или задайте вопрос на Stack Overflow, обязательно указав тег 'django-rest-framework'.
Для получения приоритетной поддержки подпишитесь на профессиональный или премиум спонсорский план.
Вопросы безопасности решаются под руководством Django security team.
Пожалуйста, сообщайте о проблемах безопасности по электронной почте security@djangoproject.com.
После этого сопровождающие проекта будут работать с вами над решением любых вопросов, если потребуется, до обнародования информации.
Спасибо всем за помощь в переводе!
Перевод производится с помощью утилиты md_docs-trans-app