Рубрики
Без рубрики

Ваше первое введение в рамки отдыха Django

Как создать API отдыха с Python и Django Step за шагом. Теги с Python, Django, начинающим, учебником.

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”