LazyUrl - сокращатель ссылок для ленивых. Проект на Django
Привет, Pikabu! Закончил свой очередной маленький проект на Django в рамках выполнения задачи становления Python backend разработчиком. Это банальный сокращатель ссылок с несколькими особенностями.
Сервисом можно и по задумке нужно пользоваться печатая команды в адресной строке браузера не переходя предварительно на страницу сервиса. В текущей реализации доступно три команды: создать короткую ссылку, посмотреть информацию и немного статистики о ссылке и деактивировать ссылку. Удалять ссылку и получать статистику может только человек создавший ссылку и получивший пароль для административного управления. Такой подход позволил отказаться от регистрации в сервисе.
Команды управления сервисом здесь расписывать не буду, минимально необходимая информация для начала работы есть на главной странице. А также подробно на русском языке расписал инструкцию у себя в блоге. Локализую проект немного позже.
Сервис работает по адресу lzy.su Надеюсь ничего не сломается после визитов реальных пользователей =)
Код проекта открыт: github.com/YuriyCherniy/lzy.su
Буду рад любым комментариям и предложениям, кроме замечаний с запятыми ) Спасибо за внимание!
Смари:
- Миграции должны лежать в репозитории. Это то как ты синхронизируешь состояние БД в разных енвах. Сейчас там все прямолинейно, а потом придется мигрировать данные (я написал это потому что увидел что в readme есть шаг сгенерить миграции, но вижу что в репозитории они таки есть. Шаг лишний, убери)
- https://github.com/YuriyCherniy/lzy.su/blob/main/templates/f... используй форму чтоб сгенерить форму. Не рисуй ее руками в темплейте
- https://github.com/YuriyCherniy/lzy.su/blob/main/short_urls/... неужели это нужно копировать так, вместо того чтобы утановить либу?
- https://github.com/YuriyCherniy/lzy.su/blob/main/short_urls/... нельзя хранить пароли в открытом виде. Даже такие.
- https://github.com/YuriyCherniy/lzy.su/blob/main/short_urls/... почему под short URL целое URL поле вместо поля под токен?
- https://github.com/YuriyCherniy/lzy.su/blob/main/short_urls/... это ломается при двух параллельных запросах. Ты получаешь max ID, не "забираешь" следующий ID, параллельно другой процесс получает тот же max ID и у тебя появляются проблемы)
- https://github.com/YuriyCherniy/lzy.su/blob/main/short_urls/... если для проверки урла тебе надо написать свой регексп это значит что ты свернул не туда
- https://github.com/YuriyCherniy/lzy.su/blob/main/short_urls/... я понимаю что это киллер-фича, но меня ломает от операций на гет запрос. Гет запросы могут выполняться непреднамеренно. Гуглом, скриптом который подтягивает картинку для урла, браузером чтоб сделать превью и т.д. В целом если гет запрос изменяет состояние - это плохо)
- https://github.com/YuriyCherniy/lzy.su/blob/main/short_urls/... почему ты используешь формы, но не используешь FormView?
- https://github.com/YuriyCherniy/lzy.su/blob/main/short_urls/... вместо редиректа на create success тебе надо рендерить сразу страницу с success. Сейчас это лишний шаг