Django Rest Framework. Туториал или как легко писать backend.

Django Rest Framework. Туториал или как легко писать backend.

Бэкендер

Сегодня очень многие backend разработчики стали писать именно rest api.


Почему же так? Чем не устраивает обычный django?

Схемка

Ответ тут у каждого свой. Но мне например нравится больше писать rest api, так как rest более гибкий и позволяет приложениям обмениваться данными в нескольких форматах. Поэтому я бы хотел поделиться как начать писать backend на Django Rest Framework (DRF).

Итак, с чего же начать? Начнем пожалуй с того, что определимся с тем, что же мы будем делать. Предлагаю сделать backend для сайта с ... Даже не знаю какую идею выбрать (Да, знаю. Так и хочется сказать, что зачем что-то придумывать, ты же пишешь backend, все равно здесь можно как-то абстрактно называть модели и потом придумать уже фронт под него, но я хочу в будущем еще и frontend написать, а потому идею надо придумать). Сделать новостной сайт, ну это слишком скучно. О придумал, так уж и быть, пусть сайт будет немного скучный - это будет что-то типа соц. сети. Но в ней мы реализуем много чего прикольного.

Чего же я именно хочу:

  • Авторизация и Регистрация - ну так естессна :-)
  • Профиль с настройками и всем, всем, всем необходимым - ну вроде очевидно :-)
  • Постики (обязательно с фоточками, видосиками и gif-ками - как же без них)
  • Опросники и голосовалки - нуууу а почему бы и нет)
  • Чатики - даааа, это было бы интересно
  • Возможность оплачивать какие-то платные вещи - посты там, подписки ну и может прикрутим какой-нибудь маркет
  • Видеочатик - тоже что-то прикольное, надо бы попробовать

  • Нуууууу... Думаю пока что хватит. Вот такое у нас чудовище Франкенштейна получится.)))
чудовище Франкенштейна

Если думаешь, что это как-то сложно для туториала?

Ну возможно так и есть, однако я буду стараться максимально подробно останавливаться на всех моментах разработки и подробно рассказывать что и как я делаю. И да, я буду рассказывать все по нарастанию сложности (ну по крайней мере я буду стараться так делать) Но как бы я писал тут, как бы ты не читал или не смотрел какие-нибудь видео уроки, запомни (!!!): если сам не будешь прогать, то и смысла читать особого нет. Увы, но это так. (НУ И ТУТ ДОЛЖЕН РАССКАЗАТЬ ПОЧЕМУ ТАК, НО МНЕ ЛЕНЬ) В общем поверь в то, что это так и все)))

Глава 1. Postgres

Увы, но без настроек никак не обойтись. Для начала обращаю внимание, а именно, я буду использовать операционную систему(ОС) Linux, поэтому если у вас Windows, то либо учите или спрашивайте у GPT как мои команды пишутся в Windows PowerShell, либо качайте WSL.

Итак, для начала обновим все пакеты Linux. sudo apt update - в студию:

$ sudo apt update

Ну круто, теперь определимся с базой данных.

Чавось? Зачем?

Ну вот так вот. Прикинь ты имеешь много постиков с видосиками и ты решил выложить свой сайт в сеть. Как левые челы смогут понять, что постики есть и увидеть их? Так вот их нужно где-то хранить и для этого мы используем базу данных (БД).

Предлагаю не тянуть кота за ... хвост и просто возьмем Postgres (https://www.postgresql.org/)

Postgres

Почему именно ее?

Ну я с ней много работал, да и в целом она классная, если интересно по подробнее почему, то иди воооот сюда. Итак, давайте ее ставить.

$ sudo apt install postgresql postgresql-contrib

А вот так :-)

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

$ sudo -i -u postgres

И вот мы вошли в учетную запись postgres на нашем сервере (компе). Но нам нужно попасть в терминал:

$ psql

И вот мы в терминале, круто. Теперь пошли создавать юзера:

CREATE USER simple_user WITH PASSWORD 'simple_password';

Если все супер, то ты увидишь тип такого. Если что, вместо simple_user и simple_password можно свои какие-то данные ввести.

Создание пользователя

Ну а теперь давайте создадим базу данных:

CREATE DATABASE simple_db WITH OWNER = simple_user;
Создание базы данных

Супер, база данных есть. Ну осталось добавить прав пользователю, что бы могли тестить и в целом пусть будет крутым:

ALTER USER simple_user SUPERUSER;
ALTER USER simple_user CREATEDB;
Наделяем правами

Глава 2. Django

Фуф, как-то так. Теперь погнали поставим Django. Для этого введем следующее:


sudo apt install python3-django

Ждем и получаем Django на сервере (компе). Ок, теперь наконец-то давайте создадим проект:

django-admin startproject simple_site

И вот, что же мы тут видим:

Содержимое

А вот что в каталоге simple_site:

Содержимое

Глава 3. Venv

Ну что ж, начнем писать? А вот нет, нужно еще одно - это поставить виртуальное окружение.

Зачем оно нам?

Все очень просто. Представь ты пишешь параллельно 3 проекта. На одном используется Python3.8, а на другом Python3.10. И ты собираешься постоянно переустанавливать версию? Нет конечно, это сложно. Для таких ситуаций придумали виртуальное окружение. Это типа когда у тебя создается кусок в памяти, где и будет крутиться вся наша задача. Ну чтож, ставим:

$ sudo apt install -y python3-venv

Ну а теперь создадим в папке с кодом:

$ python3 -m venv --system-site-packages venv

Вместо второго venv можно ставить свои названия, но все обычно называют venv.

Ну и последнее, активируем окружение:

source venv/bin/activate

Ну а для дезактивации используем следующее:

$ source venv/bin/deactivate

Ну вот мы и закончили первую часть туториала. Фуф, вроде бы я поставил все то, что нам нужно. Всем удачи и до встречи :-)

Источник: https://habr.com/ru/articles/755898/


Report Page