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

в 22:33, , рубрики: api, django, python, Учебный процесс в IT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Блог

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

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

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

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

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

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

"Дешборд"

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

Погода

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

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

Валюты

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

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

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

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

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

Новости

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

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

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

Трекер задач

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

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

Что же еще

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

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

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

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

Открытие api и android

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

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

Итог

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

Автор: разработчик 80-го уровня

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js