Django REST framework - NurOrNuLL/ESDP-AP-5-6-TEAM-2 GitHub Wiki

Django REST framework

Описание

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

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

Доступный для просмотра в Интернете API — это огромный выигрыш в удобстве использования для ваших разработчиков. Политики аутентификации, включая пакеты для OAuth1a и OAuth2 . Сериализация , которая поддерживает как ORM , так и не-ORM источники данных. Полностью настраиваемый — просто используйте обычные представления на основе функций, если вам не нужны более мощные функции . Обширная документация и отличная поддержка сообщества . Используется и пользуется доверием всемирно признанных компаний, включая Mozilla , Red Hat , Heroku и Eventbrite .

Требования

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

Python (3.6, 3.7, 3.8, 3.9, 3.10) Джанго (2.2, 3.0, 3.1, 3.2, 4.0) Мы настоятельно рекомендуем и официально поддерживаем только последние выпуски исправлений для каждой серии Python и Django.

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

PyYAML , uritemplate (5.1+, 3.0.0+) — поддержка генерации схемы. Markdown (3.0.0+) — поддержка Markdown для доступного для просмотра 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.

git clone https://github.com/encode/django-rest-framework

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

INSTALLED_APPS = [
    ...
    'rest_framework',
]

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

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

Обратите внимание, что URL-адрес может быть любым.

Пример

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

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

Любые глобальные настройки API-интерфейса REST framework хранятся в одном словаре конфигурации с именем 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. Если вы используете элемент управления входом в систему в правом верхнем углу, вы также сможете добавлять, создавать и удалять пользователей из системы.