Меня зовут Абденассер, и сегодня я покажу, как пользоваться небольшой scaffold-библиотекой для создания готовых к использованию полнофункциональных REST API на Django за секунды из командной строки, которую я разработал на прошлой неделе.

Начнем.

Настройка среды Django выходит за рамки этой статьи, но я уверен, что в интернете есть множество руководств, которые помогут вам это сделать.

В двух словах, вот то, что мы собираемся сделать в три этапа:

  • Создать проект Django;

  • Поставить rest-фреймворк Django и dr_scaffold;

  • Собрать API blog со статьями и авторами.

  1. Создаем проект Django

Давайте создадим проект Django с помощью команды django-admin:

$ django-admin startproject myApi

Эта команда делает то же самое, что и python manage.py startproject myApi, с той лишь разницей, что ей для выполнения не нужна среда Python.

Давайте перейдем к нашему новому проекту с помощью cd myApi, и создадим виртуальную среду с помощью:

$ python3 -m virtualenv env

Наконец, давайте активируем виртуальную среду:

$ source env/bin/activate

2.Ставим rest-фреймворк Django и dr_scaffold

Давайте установим пакеты djangorestframework и dr-scaffold через pip, как показано ниже:

$ pip install djangorestframework
$ pip install dr-scaffold

Теперь добавим эти пакеты в INSTALLED_APPS нашего проекта внутри myApi/settings.py:

INSTALLED_APPS = [
    …,
    ‘rest_framework’,
    ‘dr_scaffold’
]

Давайте добавим настройки CORE_FOLDER и API_FOLDER в myApi/settings.py (в рамках упрощения, просто оставим их пустыми):

CORE_FOLDER = “” # you can leave them empty
API_FOLDER = “” # or set them to be the same

3. Собираем API blog со статьями и авторами

В нашем api будет два основных ресурса: Article и Author. Начнем с Author:

$ python manage.py dr_scaffold blog Author name:charfield
???? Your RESTful Author api resource is ready ????

Эта команда создаст папку с models.py, admin.py, views.py, serializers.py, urls.py, и во всех них будет необходимый код для ресурса Author.

А теперь для ресурса Article:

$ python manage.py dr_scaffold blog Post body:textfield author:foreignkey:Author
???? Your RESTful Post api resource is ready ????

Эта команда сделает нечто аналогичное, но вдобавок добавит связь с ресурсом Author через поле foreignkey.

Чтобы сгенерировать таблицы базы данных, давайте добавим наш blog к INSTALLED_APPS в myApi/settings.py:

INSTALLED_APPS = [
    …,
    ‘rest_framework’,
    ‘dr_scaffold’,
    ‘blog’
]

Давайте выполним эти команды, чтобы создать миграции и мигрировать базу данных:

$ python manage.py makemigrations
$ python manage.py migrate

Наконец, добавим blog в urlpatterns в myApi/urls.py:

urlpatterns = [
    …,
    path(“blog/”, include(“blog.urls”)),
]

Не забудьте импортировать include в urls.py проекта:

from django.conf.urls import include

В конце концов у вас в urls.py будет нечто подобное:

from django.conf.urls import include #our added import
from django.contrib import admin
from django.urls import path
urlpatterns = [
    path(‘admin/’, admin.site.urls),
    path(“blog/”, include(“blog.urls”)), #our added blog path
]

Теперь, когда все готово, давайте выполним python manage.py runserver и перейдем к http://127.0.0.1:8000/blog/, чтобы увидеть итоговое REST blog API. А еще вы можете создать суперпользователя и перейти на http://127.0.0.1:8000/admin, чтобы увидеть панель администратора.

Не забудьте поставить звездочку https://github.com/Abdenasser/dr_scaffold на GitHub, если вам понравился проект.


Материал подготовлен в рамках курса «Web-разработчик на Python».

Всех желающих приглашаем на бесплатный двухдневный интенсив «Валидация flac-файлов». На интенсиве мы с вами наконец-то научимся читать flac-файлы, вычислять метрики их качества и заодно делать выводы об их происхождении: из mp3-файла или качественного источника.
>> РЕГИСТРАЦИЯ

Комментарии (3)


  1. moodpulse
    07.10.2021 20:43
    -1

    Кавычки хотя бы нормальные сделайте, оно cmd+c cmd+v не запустится


    1. moodpulse
      07.10.2021 20:45
      -1

      Кроме того myApi через camelCase.

      Оно ревью у экспертов проходило или у вас так и учат?


    1. moodpulse
      08.10.2021 00:36

      А, это перевод. Сорри. Но перевод чего то некачественного