Introduction
Django REST framework (DRF) - мощный и гибкий инструмент для построения Web API.
Вот несколько причин, чтобы использовать DRF:
  • Крайне удобная для разработчиков браузерная версия API;
  • Наличие пакетов для OAuth1a и OAuth2 авторизации;
  • Сериализация, поддерживающая ORM и не-ORM источники данных;
  • Возможность полной и детальной настройки - можно использовать обычные представления-функции, если вы не нуждаетесь в мощном функционале;
  • Расширенная документация и отличная поддержка сообщества;
  • Используется и пользуется уважением таких узнаваемых компаний, как Mozilla, Red Hat, Heroku, Eventbrite.
Существует пример API для тестирования, который доступен здесь доступно здесь.

Зависимости

У DRF следующие требования:
  • Python (3.5, 3.6, 3.7)
  • Django (1.11, 2.0, 2.1, 2.2)
Мы настоятельно рекомендуем и официально поддерживаем только последние версии патчей для каждой серии Python и Django.

Установка

Установите с помощью pip
1
pip install djangorestframework
Copied!
Добавьте 'rest_framework' в INSTALLED_APPS в настройках:
1
INSTALLED_APPS = (
2
...
3
'rest_framework',
4
)
Copied!

Пример

Давайте рассмотрим краткий пример использования инфраструктуры REST для создания простого API на основе модели для доступа к пользователям и группам.
Создайте новый проект:
1
pip install django
2
pip install djangorestframework
3
django-admin startproject example .
4
./manage.py migrate
5
./manage.py createsuperuser
Copied!
Теперь отредактируйте модуль example/urls.py в вашем проекте:
1
from django.conf.urls import url, include
2
from django.contrib.auth.models import User
3
from rest_framework import routers, serializers, viewsets
4
5
# Сериализаторы описывают представление данных.
6
class UserSerializer(serializers.HyperlinkedModelSerializer):
7
class Meta:
8
model = User
9
fields = ['url', 'username', 'email', 'is_staff']
10
11
# Наборы представлений описывают поведение представлений.
12
class UserViewSet(viewsets.ModelViewSet):
13
queryset = User.objects.all()
14
serializer_class = UserSerializer
15
16
# Роутеры позволяют быстро и просто сконфигурировать адреса.
17
router = routers.DefaultRouter()
18
router.register(r'users', UserViewSet)
19
20
# Привяжите конфигурацию URL, используя роутеры.
21
# Так же мы предоставляем URL для авторизации в браузере.
22
urlpatterns = [
23
url(r'^', include(router.urls)),
24
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
25
]
Copied!
Мы также хотели бы настроить несколько параметров для нашего API.
Добавьте следующее к вашему settings.py модулю:
1
INSTALLED_APPS = [
2
... # Убедитесь, что здесь включены установленные по умолчанию приложения.
3
'rest_framework',
4
]
5
6
REST_FRAMEWORK = {
7
# Используйте стандартные Django `django.contrib.auth` разрешения,
8
# или разрешите доступ только для чтения для неаутентифицированных пользователей.
9
'DEFAULT_PERMISSION_CLASSES': [
10
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
11
]
12
}
Copied!
Вот и все, мы закончили!
1
./manage.py runserver
Copied!
Теперь можно открыть API в вашем браузере по адресу http://127.0.0.1:8000/, и увидеть ваше API 'users'. Так же, если вы воспользуетесь кнопкой 'Login' в верхнем правом углу и авторизуетесь, вы сможете добавлять, изменять и удалять пользователей из системы.
Вы также можете взаимодействовать с API с помощью инструментов командной строки, таких как curl. Например, чтобы вывести конечную точку пользователей:
1
$ curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
2
[
3
{
4
"url": "http://127.0.0.1:8000/users/1/",
5
"username": "admin",
6
"email": "[email protected]",
7
"is_staff": true,
8
}
9
]
Copied!
Или создать нового пользователя:
1
$ curl -X POST -d username=new -d email=[email protected] -d is_staff=false -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
2
{
3
"url": "http://127.0.0.1:8000/users/2/",
4
"username": "new",
5
"email": "[email protected]",
6
"is_staff": false,
7
}
Copied!

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

Не можете дождаться, чтобы начать? Руководство по быстрому старту - быстрейший способ.

Руководство

Руководство проведет вас через все этапы настройки DRF. Это займет не очень много времени, однако вы получите полное понимание того, как все компоненты работают друг с другом и данное руководство крайне рекомендовано к прочтению.
Так же есть пример работающего API законченного руководства для тестовых целей, доступен здесь.

Навигатор по API

Навигатор по API - исчерпывающее руководство по всему функционалу, предоставляемому DRF.

Статьи

Основные руководства для использующих DRF.

Разработка

Прочтите руководство для разработчиков для получения информации о том, как склонировать репозиторий, запустить набор тестов и отправить изменения обратно в DRF.

Поддержка

Для поддержки обратитесь в группу обсуждения DRF или создайте вопрос на StackOverflow с указанием тэга 'django-rest-framework'.
Для уведомления об обновлениях, подпишитесь на нас в Twitter.

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

Если вы уверены, что нашли пробел в безопасности, пожалуйста, не создавайте публичный баг-репорт!
Отправьте описание проблемы по почте [email protected]. Руководители проекта будут работать с вами для решения любых подобных проблем.

Авторы перевода

Помощь в переводе

Пожалуйста, открывая Pull Request, указывайте меня в качестве ревьюера, так я буду узнавать об этом моментально.
Спасибо всем за помощь в переводе!
Перевод производится с помощью утилиты md_docs-trans-app
Last modified 1yr ago