Django Rest-Framework (2 части серии)
Веб-разработчик, достойный имени, должен быть в состоянии создать API для отдыха. Эта статья поможет вам понять все, что необходимо знать, чтобы построить свой первый API, используя язык Python и Framework Django Read.
Чтобы не пропустить ничего, нажмите Следуйте и/или следовать за мной в Twitter: https://twitter.com/iciveTheCoder_
API означает интерфейс программирования приложений, программное решение, которое позволяет двум приложениям взаимодействовать друг с другом.
В случае веб-разработки приложение, которое работает в браузере, называемом «Frontend», связывается/отправляет запрос на сервер, называемый «Backend»
Пример
Предположим, что приложение Frontend хочет, чтобы список всех статей блога он может отправить HTTP-запрос на сервер.
GET https://www.myblog.com/posts
Сервер Django будет обработать этот запрос, прочитать базу данных и вернуть список статей в формате JSON (структурированный текст). Этот список затем может быть обработан и отображен в приложении Frontend.
Как Django может знать, как справиться с этим запросом? На самом деле, он не может. Это не узнает, что делать с запросом. Вот почему нам нужно создать API. Это серверное приложение, которое определит, как ответить на разные запросы о конкретном ресурсе. В этом случае блог посты.
Обратите внимание, что все запросы на серверы выполнены через HTTP-действия.
HTTP-запросы
Действие, которое вы хотите выполнить на указанном ресурсе. Хотя существительные также встречаются, эти методы часто называют глаголами HTTP.
Вот чаще всего используемые глаголы/действия HTTP
Получить: метод получения запросов представления указанного ресурса. Получить запросы следует использовать только для извлечения данных.
ПОЧТА: Метод Post используется для отправки объекта на указанный ресурс. Это обычно приводит к изменению состояния или побочных эффектах на сервере.
Поместите: метод PUT заменяет все текущие представления целевого ресурса с содержанием запроса.
Патч: метод патча используется для применения частичных изменений в ресурс.
Удалить: метод удаления удаляет указанный ресурс.
Конец теории
Теория в порядке, но гораздо проще понять концепцию, путем его практики.
Поэтому мы идем в следующие разделы для создания API отдыха с Django.
Последняя версия Python можно скачать здесь: https://www.python.org/downloads/
Следуйте инструкциям на этом сайте в соответствии с вашей операционной системой (Mac, Windows или Linux)
Чтобы проверить, правильно ли Python установлен правильно, вы можете запустить эту команду с вашего терминала
python3 --version # Python 3.9.6
Виртуальная среда
При работе над проектом Python мы должны работать с несколькими библиотеками, такими как Django и Django Restard Framework.
Согласно дате создания проекта. Можно, например, что библиотека Django Ress Framework не совпадает с одним номером версии во всех других проектах.
Как позволить каждому проекту иметь свою собственную версию Python и свои собственные версии библиотек?
Мы будем использовать виртуальные среды.
Python предоставляет вам систему, которая позволяет вам создавать виртуальные среды.
Как только среда была создана и активирована, все библиотеки могут быть использованы только в среде, к которой они принадлежат.
Как создать виртуальную среду
Обычно мы помещаем виртуальную среду в папке проекта.
Создайте и получить доступ к папке для нашего проекта
mkdir myblog cd myblog
Из этой папки вы можете создать виртуальную среду, которая будет прикреплена к проекту
python3 -m venv env
Здесь мы запускаем Python3 с вариантом модуля venv (-m venv). Env – это имя, которое мы даем нашей виртуальной среде.
После создания вы можете активировать его
source env / bin / activate
Вот и все это! Теперь у вас есть виртуальная среда Python, созданная для вашего проекта. Обычно терминал скажет вам, что ваша среда активирована путем отображения его имени.
Обратите внимание, что для деактивирования виртуальной среды ты должен бежать
deactivate
Установка Django.
В папке проекта Myblog и с включенной виртуальной средой запустите следующую команду установки:
pip install django
а также
pip install djangorestframework
Фактически с этого момента, каждый раз, когда я прошу вас выполнить команду в терминале, я предполагаю, что вы находитесь в папке проекта «MyBlog», и что виртуальная среда активирована.
Создание проекта
Django позволяет создавать конфигурацию проекта, а затем несколько приложений, связанных с этим проектом.
Например, проект «MyBlog» может иметь заявку на управление постами и еще одним приложением для управления комментариями.
Каждое приложение разделяет ту же конфигурацию проекта.
Существует команда Django для создания конфигурации проекта.
Запустите следующую команду:
django-admin startproject config.
Команда «StartProject» создает конфигурацию проекта с именем «CONFIG». Точка ‘.’ Указывает, что мы хотим создавать проект в текущей папке
Вам может показаться странным, что имя «Config» было выбрано для проекта. На самом деле это имеет смысл, потому что оно касается конфигурации проекта.
Создание приложения
Проект «CONFIG» является только частью конфигурации. Чтобы добавить функции в ваш проект, вы должны создать одно или несколько приложений.
Для этого запустите эту команду:
djangoadmin startapp posts
Команда «StartApp» создает приложение с именем «сообщения». Именно в этом приложении мы создадим нашу API.
Проект «Config» и приложение «Сообщения» были созданы с помощью структуры и файлов папки.
Вот пример созданных файлов:
Все эти папки и файлы могут звучать как много, но не волнуйтесь, они там, чтобы упростить разработку приложений. Я объясню их со временем.
Последняя маленькая точка, нам нужно добавить следующие строки кода в файл конфигурации проекта ‘config’ settings.py
# config / settings / py INSTALLED_APPS = [ ... ... 'rest_framework', 'rest_framework.authtoken', 'posts', ]
Здесь мы указываем проект, который мы хотим использовать эти три приложения.
- REST_FRAMEWORK: позволит нам создать нашу API
- REST_FRAMEWORK.AuthToken: позволит нам добавить безопасность на нашу API
- Сообщений Скажите Django использовать наши сообщения приложения
Первый шаг – создать модель данных Django, которая будет содержать наши сообщения в блоге
Откройте файл «Models.py» в папке приложения «Посты» и введите следующий код
# posts / models.py from django.db import models from django.contrib.auth import get_user_model User = get_user_model() class Post(models.Model): title = models.CharField(max_length = 255) body = models.TextField() created_on = models.DateTimeField(auto_now_add = True) user = models.ForeignKey(User, on_delete = models.CASCADE)
Обратите внимание, что при каждом проекте Django имеется пользовательская модель и библиотеки аутентификации, созданные автоматически. Пользовательская модель содержит среди других полей: имя пользователя, электронное письмо, First_Name, Last_Name и пароль.
Мы используем () ‘для получения ссылки на эту модель.
Наконец, этот файл «Model.py» будет служить инструкцией Django для создания базы данных, которая будет содержать таблицу и поля с одинаковыми определениями, что и в этом файле.
Чтобы создать базу данных, вы должны создать файл миграции. Файл миграции – это план, «чертеж» того, что должна содержать базу данных.
Django позволяет автоматически создавать этот файл миграции со следующей командой
$ python manage.py makemigrations
Как только файл миграции создан, мы можем запустить его, и Django создаст базу данных с инструкциями, содержащимися в миграции.
Команда для начала миграции выглядит следующим образом:
$ python manage.py migrate
Наконец, необходимо создать наш первый пользователь. Django предоставляет нам команду для создания суперпользователя
$ python manage.py createsuperuser
Эта команда будет задать вам имя пользователя, электронную почту и пароль, чтобы создать пользователь
Добавьте шаблон почтового шаблона на панель администратора
Чтобы использовать модель Post с панели администратора Django, вам нужно добавить следующий код
# posts / admin.py from django.contrib import admin from posts import models admin.site.register(models.Post)
Посетите панель администратора
Чтобы убедиться, что все, что мы сделали, работали, запустите сервер и посетите панель администратора
$ python manage.py runserver
Команда Runserver запустит сервер Django
Для доступа к панели администратора посетите: http://127.0.0.1:8000/admin/
Страница будет запрашивать имя пользователя и пароль
Тогда вы должны увидеть страницу с группами, пользователями и сообщениями столы
Понимание логики Django Rest-Framework
Django Rest-Framework предоставляет вам библиотеки, которые позволяют создать API от A до Z. Rest-Framework использует определенную логику, которую вам нужно будет понять, если вы хотите создать API
Что вы хотите создать как API?
API, который мы хотим создать, на самом деле является интерфейсом для чтения, создания и модификации сообщений
Вот 6 действий и URL-адреса, которые мы хотим создавать:
- Прочитайте список всех наших статей: Получить API/посты
- Прочитайте конкретную статью: Получить API/Сообщения/1
- Создать статью: Post API/посты
- Отредактируйте статью: поставить API/посты/1
- Частично изменить статью: Patch API/Сообщения/1
- Удалить статью: Удалить API/Сообщения/1
Формат обмена данными
Обмен данными между бэкэндом и Frontend осуществляется в структурированном текстовом формате в формате JSON.
Следовательно, ret-Framework, следовательно, предоставляет объект для преобразования между форматом Django и совместимым форматом JSON. Это преобразование использует класс сериализатора.
Создать сериализатор
Поэтому первый шаг для создания сериализатора. Для этого создайте файл с именем Serializers.py под папкой постов приложения и добавьте эти строки кода:
# posts / serializers.py from rest_framework import serializers from .models import Post class PostSerializer(serializers.ModelSerializer): class Meta: model = Post fields = '__all__'
Там у вас есть, это не сложно! Фактически, большая часть работы осуществляется библиотекой Rest-Framework. Здесь нам просто нужно упомянуть, какой шаблон и какие поля мы хотим использовать для API.
Обратите внимание, что вместо « все «Вы могли бы указать имя каждого нужных полей
fields = ['title', 'body']
Создать вид
Как только сериализатор создан, ничто не мешает нам создать API для модели Post
APIVIEW VS Viewset.
Django Ress Framework позволяет создавать нашу логику API, используя две разные методы:
Apiiview.
Использование класса APIView – самая длинная техника для создания API, но это позволяет для настроительной настройки. Если у вас есть особые потребности, ApiView – ваш вариант выбора.
ViewSet
Использование класса Viewset – это самая быстрая техника для создания API на основе модели Django, связанной с базой данных. Класс Viewset создаст для вас 7 действий, чаще всего используемых при создании API: Список, создание, извлечение, обновление, Partial_Update и уничтожение. Следовательно, это намного быстрее, чем создание каждого действия вручную, как с APIIIVEW. С другой стороны, если у вас есть очень конкретные потребности, не удастся настроить свой API как с APIIView
Apiiview или Viewset для нашего проекта?
Поскольку мы собираемся создать API на основе модели Django, и это будет без особой настройки, я решил использовать оформления.
Из файла Points.py в папке приложений поста. Введите следующий код:
from rest_framework import viewsets from .models import Post from .serializers import PostSerializer class PostViewSet(viewsets.ModelViewSet): serializer_class = PostSerializer queryset = Post.objects.all()
Опять же, у вас есть демонстрация силы Rest-Framework. Просто создайте вид на основе «ModelViewSet», а затем укажите, какой сериализатор и где придет данные.
С помощью этого простого кода у вас будет доступ к 6 действиям, все унаследованным от модельных призваний и его 6 эквивалентных методов: список, создание, извлечение, обновление, частичное обновление и уничтожение
Как только 6 просмотров доступны через PostWiewSet, вы должны создать путь URL для каждого из 6 просмотров.
Создать путь URL.
У нас есть представления теперь, есть только один шаг, и это необходимо создать путь URL для доступа к этим 6 действиям.
Опять же, не нужно создавать 6 маршрутов вручную, Rest-Framework предоставляет нам класс маршрутизатора.
Создайте файл URLS.PY под папкой приложений сообщений
# posts / urls.py from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import PostViewSet router = DefaultRouter() router.register('posts', PostViewSet, 'post') urlpatterns = [ path ('', include(router.urls)), ]
Этот код создаст следующий 6 URL-путь:
- Get/Posts (отобразить вид списка)
- Получить/сообщения/1 (Отобразите сообщение с)
- Post/Posts (создать)
- Путь/посты/1 (обновление)
- Патч/Сообщения/1 (Частичное обновление)
- Удалить/сообщения/1 (Уничтожить пост)
Все, что вам нужно, это подключить эти дороги к вашему проекту. Для этого введите следующий код в файле URLS.PY в соответствии с проектом CONFIG
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin /', admin.site.urls), path('api /', include('posts.urls')), ]
Маршруты, созданные по сообщениям/URLS.PY, все будут использоваться под URL API/EX. API/посты.
Наконец, пришло время проверить все, запустив сервер
$ python manage.py runserver
Затем посетите адрес: http://127.0.0.1:8000/api.
Эта страница создается автоматически в Rest-Framework, чтобы позволить вам проверить вашу API.
Если вы нажмете на API «Сообщения». Другая страница откроется со списком всех ваших сообщений
После того, как вы создали сообщение, вы также можете прочитать этот конкретный пост, добавив номер сообщения на URL (EX: API/POSTA/3)
Теперь можно использовать этот интерфейс Rest-Framework для проверки пути 6 действий и URL-адресов, которые мы создали ранее.
Добавить возможности поиска на нашу API
Django Rest-Framework позволяет добавить возможности поиска на нашу API.
Результат станет конечной точкой, доступной для фильтрации наших постов
бывший: ПОЛУЧАТЬ
Эта конечная точка вернет список сообщений, содержащих слово «Python»
В приложении Posts Open Views.py и Добавить:
from rest_framework import filters class PostViewSet(viewsets.ModelViewSet): serializer_class = PostSerializer authentication_classes = (TokenAuthentication,) permission_classes = ( UpdateOwnProfile, IsAuthenticatedOrReadOnly, ) queryset = Post.objects.all() filter_backends = (filters.SearchFilter,) search_fields = ('title','body')
Последние 2 строки класса PostViewset являются красивыми самоописательными. Фильтр установлен, а затем мы указываем все поля для поиска.
Этот новый поисковый фильтр можно протестировать с помощью страницы тестирования Rest-Framework.
Запустите сервер и перейдите к API/постам, вы теперь должны увидеть кнопку фильтра (в правом верхнем углу). Нажмите на кнопку, и страница поиска откроется, вы можете ввести текст поиска и нажать Поиск
Результат поиска будет отображаться
Конец первой части
Это все на сегодня. В следующей части мы обсудим аутентификацию с токенами и защитой определенных действий/URL
Чтобы не пропустить ничего, нажмите Следуйте и/или также следуйте за мной в Twitter: https://twitter.com/iciveTheCoder_
Django Rest-Framework (2 части серии)
Оригинал: “https://dev.to/ericchapman/your-first-introduction-to-django-rest-framework-2lbl”