Введение в Django REST Framework: разработка с примерами
Опубликовано: 2020-10-05Django REST Framework широко распространяется в виде стандартного пакета Python, который может потребоваться пользователям для начала разработки RESTful API. Он сложный, мощный, удивительно простой в использовании и предлагает привлекательную и удобную для просмотра версию для API. Django REST Framework предоставляет возможность возврата объектов JSON. Этот фреймворк предлагает мощную сериализацию модели и отображает данные, используя базовые представления на основе функций, полностью в средстве просмотра REST. Узнайте больше о среде Django REST ниже:
Оглавление
Что такое Django REST Framework?
Django REST Framework — это гибкий и надежный набор инструментов, который позволяет разработчикам легко создавать веб-API. Он также предлагает обобщенные представления и сериализаторы на основе классов для API. Будучи исходным кодом, он обозначается аббревиатурой DRF, что представляет собой библиотеку Python для разработки интерфейсов программирования веб-приложений. Как и в этой статье, мы говорим о разработке API с пошаговыми инструкциями.
Но прежде чем приступить к работе с руководством, важно понять, почему фреймворк вообще важен. Многие доступные фреймворки позволяют разработчикам легко создавать API для своих блочных приложений, но предпочтительным является фреймворк Django REST. Эта структура удобна в использовании несколькими способами и предлагает следующие преимущества:
- Он предлагает веб-браузерам удобный интерфейс прикладного программирования, что является большой победой для разработчиков.
- Он имеет политики аутентификации, включая пакеты для OAuth1, OAuth2 и т. д.
- процессор сериализации в нем поддерживает источники данных ORM и не-ORM
- эта структура имеет обширную документацию и предлагает отличную поддержку сообщества
- Он используется и пользуется доверием крупных платформ, включая Mozilla, Heroku, RedHat и т. д.
Читайте: Приложения Django: все, что вам нужно знать о
Установить разработку Django REST Framework
Для начала вам нужно установить зависимости Python для операционной системы. Если вы используете платформу Windows, вы можете легко установить платформу Linux в качестве дополнительной операционной системы с помощью виртуального ящика или ручной команды. Чтобы продолжить работу с фреймворком, вы можете использовать эффективные и удобные инструменты управления Python.
Большинство инструментов являются незаменимыми помощниками. Они позволяют разработчикам быстро изменять версии Python, устанавливать версии для конкретных проектов, управлять виртуальной средой и устанавливать несколько версий в системе. Если вы используете операционные системы Linux или Mac, установить его будет несложно.

С помощью фреймворка Django REST мы можем преобразовать не-RESTful-приложение в RESTful-приложение. Это включает в себя нижеперечисленные процедуры:
Настройка ДРФ
Для установки DRF вам необходимо установить:
Оболочка
$ pip установить djangorestframework
$ пип замораживание > требования.txt
Обновить настройки:py:
Питон
УСТАНОВЛЕННЫЕ_ПРИЛОЖЕНИЯ = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'говорить',
'rest_framework'
)
RESTful структура
В разработке RESTful API конечные точки представляют его структуру и доступ пользователей из приложения с помощью таких методов, как GET, PUT, POST, DELETE. Эти конечные точки логически организованы вокруг элемента и коллекций, которые считаются ресурсами. Если есть один ресурс, то соответствующие ссылки будут использоваться в качестве URL-адресов для элементов и коллекций.
ПОЛУЧАТЬ
СООБЩЕНИЕ
ПОМЕЩАТЬ
УДАЛЯТЬ
/сообщения/
Показать все сообщения
Добавить новый пост
Обновить все сообщения
Удалить все сообщения
/сообщения/<id>
Показать <id>
Н/Д
Обновить <id>
Удалить идентификатор
Сериализаторы и представления
Основным строительным блоком среды Django REST являются сериализаторы, и они используются для уточнения представления различных записей данных на основе моделей Django. Сериализаторы — это стандартный класс Python, который может наследовать поведение модели от фреймворка.
Внутри класса сериализаторов присутствуют отдельные наборы полей, которые используют типы данных из своего пакета того же фреймворка. Они также заметили сходство между фреймворком и классами. Классы-сериализаторы сами по себе не думают, и они интегрированы с представлениями, которые управляют большей частью логики службы REST. Кроме того, он использует классы сериализатора для преобразования данных. Например, обычный метод представления Django:
из магазина импорта coffeehouse.stores.models
из coffeehouse.stores.serializers импортировать StoreSerializer
из rest_framework.decorators импортировать api_view
из rest_framework.response импортировать ответ
@api_view(['ПОЛУЧИТЬ','ОТПРАВИТЬ','УДАЛИТЬ'])
def rest_store (запрос):
если request.method == 'ПОЛУЧИТЬ':
магазины = Store.objects.all()
сериализатор = StoreSerializer (сохраняет, много = True)
возврат ответа (serializer.data)
elif request.method == 'POST':
… #логика для операции HTTP POST
elif request.method == 'УДАЛИТЬ':
… #логика для операции HTTP DELETE
Представления на основе классов
С помощью представлений на основе классов среда Django REST обеспечивает доступ к высшим и сложным функциям пользователей. Представления на основе классов предлагают функции настоящих полноценных классов Python и позволяют представлениям Django легко работать с помощью принципов объектно-ориентированного программирования, что обеспечивает большую возможность повторного использования наряду с коротким временем реализации.

Представления на основе классов Django подчеркивают мощный подход к созданию представлений Django, а также являются альтернативой методам, используемым для создания API. Чтобы разработать представление на основе классов, важно создать класс, который может наследоваться от одного из других классов. Например:
# просмотров.py
из Django.views.generic импортировать TemplateView
класс AboutIndex (TemplateView):
имя_шаблона = 'index.html'
def get_context_data (я, ** kwargs):
# **kwargs содержит значения инициализации контекста ключевого слова (если есть)
# Вызов базовой реализации для получения контекста
context = super(AboutIndex, self).get_context_data(**kwargs)
# Добавляем контекстные данные для передачи в шаблон
context['aboutdata'] = 'Пользовательские данные'
вернуть контекст
# URL.py
из coffeehouse.about.views импортировать AboutIndex
из пути импорта django.urls
URL-шаблоны = [
path('about/index/',AboutIndex.as_view(),{'onsale':True}),
Оформить заказ: 12 лучших вопросов и ответов для интервью с Django для начинающих
Обновить просмотры
Чтобы соответствовать структуре приложения RESTful, важно провести рефакторинг текущих представлений. Вы можете закомментировать эти представления и добавить их как-
Питон
из django.shortcuts импортировать рендеринг
из django.http импорт HttpResponse
из rest_framework.decorators импортировать api_view
из rest_framework.response импортировать ответ
из сообщения Talk.models import
из talk.serializers импортировать PostSerializer
из talk.forms импортировать PostForm
деф дома (запрос):
tmpl_vars = {'форма': PostForm()}
вернуть рендеринг (запрос, 'talk/index.html', tmpl_vars)
@api_view(['ПОЛУЧИТЬ'])
деф post_collection (запрос):
если request.method == 'ПОЛУЧИТЬ':
сообщения = Post.objects.all()
сериализатор = PostSerializer (сообщения, многие = Истина)
возврат ответа (serializer.data)
@api_view(['ПОЛУЧИТЬ'])
def post_element (запрос, pk):
пытаться:
пост = Post.objects.get(pk=pk)
кроме Post.DoesNotExist:
вернуть HttpResponse (статус = 404)
если request.method == 'ПОЛУЧИТЬ':
сериализатор = PostSerializer(пост)
возврат ответа (serializer.data)
Объяснение
- В инструкциях, которые приведены выше, декоратор @api_view анализирует соответствующий HTTP-запрос, который передается в функцию представления.
- Теперь представление либо использует одно сообщение, если оно предназначено для элемента, либо захватывает все данные, если оно предназначено для коллекции.
- Наконец, данные теперь сериализуются в JSON и возвращаются соответствующим образом.
Доступный для просмотра в Интернете API или обновленный URL-адрес
Некоторые обновленные URL-адреса для Python:
# Обсуждение URL
шаблоны импорта из django.conf.urls, URL
URL-шаблоны = шаблоны(
'обсуждение.просмотры',
URL(r'^$', 'дом'),
# API
URL(r'^api/v1/posts/$', 'post_collection'),
url(r'^api/v1/posts/(?P<pk>[0-9]+)$', 'post_element')
)
Рефакторинг для интеграции RESTful API
Он включает в себя основные методы HTTP, такие как:
ПОЛУЧАТЬ
Начальная загрузка страницы, важно отображать сообщения, и для этого вы можете добавить этот запрос:
load_posts()
// Загружаем все посты при загрузке страницы
функция load_posts() {
$.ajax({
URL: «api/v1/posts/», // конечная точка
type : «GET», // http-метод
// обрабатываем успешный ответ
успех: функция (json) {
for (var i = 0; i < json.length; i++) {
console.log(json[i])
$("#talk").prepend("<li id='post-"+json[i].id+"'><strong>"+json[i].text+"</strong> – <em> “ +json[i].author+”</em> – <span> “+json[i].created+
"</span> – <a id='delete-post-"+json[i].id+"'>удалить меня</a></li>");
}
},
// обрабатываем неуспешный ответ
ошибка: функция (xhr, errmsg, err) {
$('#results').html("<div class='alert-box alert radius' data-alert>Ой! Обнаружена ошибка: "+errmsg+
” <a href='#' class='close'>×</a></div>”); // добавляем ошибку в дом
console.log(xhr.status + «:» + xhr.responseText); // выводим на консоль немного больше информации об ошибке
}
});
};
СООБЩЕНИЕ
Запросы POST обрабатываются аналогичным образом, и вы можете проверить это, обновив представления. Вы можете обновить функцию post_collection() в views.py:
@api_view(['GET', 'POST'])
деф post_collection (запрос):
если request.method == 'ПОЛУЧИТЬ':
сообщения = Post.objects.all()
сериализатор = PostSerializer (сообщения, многие = Истина)
возврат ответа (serializer.data)
elif request.method == 'POST':
data = {'текст': request.DATA.get('the_post'), 'автор': request.user.pk}
сериализатор = PostSerializer (данные = данные)
если сериализатор.is_valid():
сериализатор.сохранить()

возврат ответа (serializer.data, status=status.HTTP_201_CREATED)
вернуть ответ (serializer.errors, статус = статус.HTTP_400_BAD_REQUEST)
Читайте также: Зарплата разработчиков Django в Индии
Суть
Фактическая часть REST инфраструктуры Django REST довольно проста, и все, что вам нужно сделать, это обновить функцию элемента сообщения, чтобы обработать запрос. Если у вас все еще есть какие-либо вопросы, то есть ряд фреймворков и ресурсов Django REST для импровизации.
Если вам интересно узнать больше о Django и других языках и инструментах разработки с полным стеком, ознакомьтесь с дипломом PG upGrad & IIIT-B по разработке программного обеспечения с полным стеком, который предназначен для работающих профессионалов и предлагает более 500 часов тщательного обучения, Более 9 проектов и заданий, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.