Как девочки помогли мне подружится с Django

В данной статье я бы хотел поделиться опытом изучения языка программирования Python в целом и фреймворка Django в частности (с нуля, или почти с нуля).


Немного истории


Чуть больше года назад я загорелся желанием изучить Python. После быстрого знакомства с синтаксисом (благо он мне показался дружелюбным) остро встал вопрос о реализации чего-то что можно было бы использовать в повседневной жизни, хотя бы в теории.


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


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


Что это за зверь такой


О чем же этот курс? Базовая его часть посвящена разработке и деплою простенького блога на Django. В качестве хостинга используется pythonanywhere.


В расширенной его части добавляются более сложные кейсы как: простая модерация постов в блоге, добавление комментарием, авторизация, перевод базы с SQLite на PostgreSQL, деплой на heroku и получение домена.


В моем случае я оставил сайт для sqlite и pythonanywhere, так как проект сугубо личный.


Отклонение от начального курса


В то же время, в силу того что у меня были базовые знания в области разработки, готовые уроки были быстро пройдены. И я занялся усложнением базового проекта и доведением его до состояния, которое можно наблюдать сейчас (чукча не дизайнер, но пытался).



Кастомизация (или что можно еще придумать)


Все нижеприведеные примеры я считаю несложными и достаточно интересными для начинающих, и они в то же время помогут сохранять непрерывность изучения разработки в рамках одного проекта.


Блог


Итак, начнем с обновления блога.


В первую очередь в глаза, для тех кто ознакомлен с исходным курсом, бросается обновленный дизайн. Он взят из бесплатных примеров resposive стилей и немного обработан напильником.



Саму обработку напильником, как и в целом идею сменить дизайн с готового, представленного в рамках курса можно, на мой взгляд, считать более углубленным изучением HTML и CSS.


Следом хотел бы отметить добавление категорий, как по мне — идея лежит на поверхности. Я не стал делать полноценную древовидную структуру категорий, ограничившись группировкой категорий.


На этом расширение фукнциональности блога я посчитал завершенным и перешел к другим django-приложениям в рамках проекта.


"Дешборд"


Следом шел "dashboard", где изначально я планировал сделать некую информационную таблицу, но в какой-то момент отказался от этой идеи, перейдя к концепции один dash — одна страница.
В целом этот раздел можно считать посвященным работе со сторонними api.


Погода



Первым к реализации взял страничку погоды. В качестве провайдера использовал openweather. Среди бесплатных api у openweather есть как погода в данный момент времени, так и прогноз на 5 дней. Стандартных иконок bootstrap стало не хватать на этом моменте и я использовал бесплатный набор иконок погоды в svg. Для отображения графика максимальной/минимальной температуры использовался chartjs.


Валюты



Вторым шла страничка курсов валют. Т.к. проживаю я в Беларуси то в качестве источника информации взял официальный api от НБРБ. После реализации погоды не сделано практически ничего нового, просто информация от другого провайдера, для графиков также взят chart.js.


Криптовалюты



То же касается и третьего элемента приложения — раздела криптовалют. В качестве поставщика я взял api от coinmarketcap. Как раз во время реализации отображения криптовалют я столкнулся с ограничениями бесплатных api. И для того чтобы мое приложение не забанили я добавил кеширование результатов запросов в базу по простой схеме — если с момента такого же запроса к внешнему api прошло меньше порогового значения времени то я беру значение из базы.


Новости



Далее по списку идет четвертый элемент — новостная лента. Приступая к поиску открытых api для новостей я с радостью услышал что umputun открыл api сайта raido-t, предоставив доступ как к подкастам, так и новостям в текстовом виде.


Но тут меня ждал подвох. Бесплатные аккаунты на pythonanywhere имеют доступ к запросам с бекенда только к whitelist'у. В котором были и openweather и, как ни странно, сайт nbrb. Полистав ЧАВО я узнал что возможность расширить этот список есть, отправив в техподдержку линк на api и документацию к нему. Буквально через пару дней, чему я был несказанно удивлен, учитывая бесплатность аккаунта, адрес был добавлен в белый список.


Трекер задач



Еще одним отдельным приложением стал уже привычный после hello word и бложика todo.
Тут, после дешборда и блога, что-то новое в реализации сложно отметить. Еще одна тренировка создания моделей, верстки. Задания, категории, статусы. Несмотря на примитивность функциональности получилась вполне юзабельная страничка.


Что же еще


И казалось бы на этом все видимые надстройки над исходным проектом заканчиваются, но параллельно с добавлением страниц к "дешборду" я сделал телеграм бота, который предоставлял ту же информацию что и странички в дешборде но в текстовом виде.


Поначалу использовал django telegram bot библиотеку, что сподвигло меня к разделению конфигураций на dev и prod как раз с целью сделать бота не в pooling моде, а на основе webhooks.



Позже перешел на более базовую библиотеку, так как возникали проблемы с обновлением api. На этом этапе полезным для себя хотел бы отметить как изучение такой предметной области как построение телеграм бота и режимов его работы, так и разбор конфигурации.


Открытие api и android



После некоторого логического завершения работы над ботом возникла идея, все еще не завершенная, по написанию android приложения, которое бы также взаимодействовало с основным сайтом. Для этого я задействовал django rest framework, с помощью которого открыл доступ уже к api сайта с авторизацией по токену. В самом же приложении на данный момент есть только две плитки — погода и курсы валют:


Итог


По итогу могу отметить что связка Python+Django является весьма дружелюбной для новичков и снижает порог входа. Курс, с которого я начал, могу рекомендовать к прохождению, также как и могу рекомендовать раширять его подобными модулями для продолжения образовательного процесса.

Tags:
python, django, rest, api, android, учебный процесс, учебный процесс в it

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.