Часть 1.
Начинаю разработку сайта интернет магазина на фреймворке Django, что входит в программу обучения на платформе SkillBox "Профессия Python-разработчик". Дипломный проект рассчитан на 10 недель. Вот видимо в течении этого времени я и буду вести эту публикацию.
Данный цикл статей, постов и видеороликов делается в первую очередь для себя и тех людей кто выполняет подобное обучение, людей интересующихся IT. На экспертное мнение не претендую. Это нечто типа электронной записной книжки где я попытался упорядочить свои мысли и понять куда двигать дальше.
Начинаем с установки проекта
В Гитлабе появился новый репозиторий, из которого нужно собрать проект. Лично мне, в описании к сборке пакета, показалось очень много недосказанностей и туманностей. Почему не выложить подробную инструкцию о том как правильно начать проект - не понятно. А начало, оно ж как фундамент здания, на этом все держится и переделывать потом всё заново - желания мало.
Раз наверное с десяток я клонировал репозиторий с гитлаба и разворачивал его на своём компьютере, сравнивал, что из всего этого можно удалить а что оставить. Потом понимал, что опять получилось через "одно место", удалял и снова клонировал, и так много раз. Не исключено, что еще не раз так поступлю.
Снял небольшой ролик по развертыванию шаблона и установке первичного приложения django. Возможно, если бы написал сценарий, ролик сократился раза в три (много туплю на видео).
Вот я "развернул" шаблон приложения на моем компе. Страница магазина на экране:
Дальше то что?! В башке звенящая пустота!
Куратор сказал - изучай мол swagger-документацию и по ней надо делать бэкэнд... Ясней от этих слов не стало...
Как мне показалось - надо начать с пользователя: отработать вход, выход, регистрация. Потому как сейчас ещё ничего не работает. Попробовал было войти:
Хотя имя пользователя и пароль правильные. Но, если зайти в Django-админку под этими же учетными данными - вход осуществляется без проблем!
Значит с именем пользователя и паролем - всё хорошо. Самое интересное, что после того как я побывал в админке и перешел на главную страницу, я там так же "в системе"
Надо отрабатывать вход через главную страницу...
Вначале вроде бы что-то начал делать, практически осуществил вход. Но в чате курса сказали - всё это фигня, не то. Мол тебе надо по сваггеру делать. Ну да, сразу всё стало понятно, и как я раньше не догадался!?
Так какие же первые действия, после установки всего необходимого?
Первым нужно создать приложение api, в котором будут указаны все необходимые endpoints, отвечающие за обработку пользователей, продуктов, категорий и прочих штукенций, которые будут на нашем сайте.
python manage.py startapp api
В нашем проекте появляется новая папка api, откроем ее и файл urls.py (его я уже создал), на данном этапе только этот файл используется:
В этом файле прописаны все эндпойнты, которые будут в адресной строке после http://127.0.0.1:8000/ и api/, причём http://127.0.0.1:8000/api/profile такого адреса не будет, будет http://127.0.0.1:8000/profile
Я пока смутно понимаю куда делся этот api из адресной строки... магия, не иначе!
В файле urls.py приложения api прописаны 5 функций и один класс, отвечающие за обработку соответствующих событий. Этот файл надо прописать в главном urls.py (у меня это папка backend), плюс добавить управление статическими файлами. Без этого не будет подгружаться аватарка, сайт не будет понимать откуда ее грузить.
Ну вот эндпойнты у нас прописаны, теперь нужно создать те функции что записаны в эндпойнтах. Это делается уже в другом, новом приложении, которое отвечает за всё что связано с пользователем, я назвал его profile_user.
python manage.py startapp profile_user
В этом приложении первым делом создается профиль пользователя, в котором будут указаны все данные на пользователя. Имя пользователя, имя, отчество, фамилия, телефон, email, адрес аватарки и куда она будет сохраняться.
Вот модель создана, выполняются необходимые миграции:
python manage.py makemigrations
python manage.py migrate
И только после этого переходим к файлу views.py, где будем обрабатывать описанные выше эндпойнты.
Вход, выход, регистрация, смена аватарки работают как надо, а вот редакцию пароля и данных пользователя еще толком не настроил, да и код местами мне не нравится. Надо будет переделать. Так что тут не привожу. Да и вообще, это всё очень сырое, но для того чтобы сдвинуться с мёртвой точки (с чего начать????) достаточно.
Если у кого есть какие-то предложения по улучшению кода, пожалуйста - в комментариях ниже принимаю любую критику и пожелания. Лайк, подписка приветствуются! Я хоть буду понимать что не мне одному это всё надо.