Решил более подробно и понятно описать, что успел накрутить в своём учебном проекте за последнее время. Получился этакий «путь героя» от новичка до… ну, скажем так, до человека, который перестал бояться и начал писать на классах 😅 Погнали:
🔮 Гороскоп — первые шаги
С чего всё начиналось? С простейшего приложения «Гороскоп». Никакой базы данных — только словарь и список в отдельном питон-файле (местная БД, хе-хе). Разбирался с:
• маршрутами (urls)
• представлениями (только функции, про классы тогда даже не слышал)
• шаблонами и наследованием (extends, include)
• даже написал свой кастомный тег, чтобы выводить смайлик знака зодиака.
Тогда это казалось магией. Сейчас понимаю — цветочки.
🎬 Фильмы — подключаем базу данных
• Следом пошли «Фильмы». Тут уже полноценные модели, миграции и связи:
• Фильмы, актёры, режиссёры.
• Разобрался с «один ко многим» и «многие ко многим».
• Всё ещё на функциях, но данные уже из БД летят в шаблоны.
• Появилось понимание, как Django ORM дружит с SQL, а значит и мне следует тоже)
🔐 Регистрация, авторизация и приложение «Отзывы»
Захотелось, чтобы сайт стал чуточку интерактивнее. Добавил:
• регистрацию и логин (встроенный User, пока без заморочек)
• приложение «Отзывы» — любой авторизованный может оставить ровно один отзыв о проекте в целом. Проверка на количество — через логику в представлении.
Тут впервые столкнулся с ограничением доступа и понял, что просто if request.user.is_authenticated — это только верхушка айсберга.
📝 Блог — выходим на новый уровень
• Полный CRUD для постов.
• Права доступа: автор может редактировать/удалять свой пост, остальные — только читать.
• Комментарии и лайки: все как в обычной соц.сети (да, заморочился, нууу как я😅).
• Формы — и вот тут пришлось попотеть. Django-формы штука мощная, но с первого раза не запоминается.
• И самое главное — всё это написано на классах (CBV). Совсем другой подход, другая философия. Без помощи нейросетей пока сложно, всё не запомнить, но главное работает как я хотел!
Ещё открыл для себя кастомизацию админки — столько полей, фильтров, встроенных форм… Всё сразу не запомнить, да и не надо, наверное. Главное — знать, что такая возможность есть.
⏸️ Перерыв и возвращение
А потом был перерыв или можно сказать отдых. Совсем не занимался по Django. И когда вернулся — в рекомендациях YouTube всплыло видео «Django To Do List App With User Registration & Login». Решил: а почему бы не сделать ещё одно приложение для закрепления работы на классах?
• ToDo-лист:
• CRUD на классах.
• Права доступа (каждый авторизованный видит и взаимодействует только со своим списком задач)
• Поиск по задачам через Q и icontains.(пока сложнааа)
• Bootstrap для приличия(но еще в процессе допиливания)
Еще чем хорош Django - приложение, это по сути отдельный контейнер, ты можешь его перенести в другой проект, немного подправить, настроить, добавить, и оно уже будет работать там, как будто изначально для другого проекта и писалось)
🧠 Что понял за это время
• Функции → классы: переход сложный, но оно того стоит. Кода меньше, логика чище.
• Перерывы — зло, их лучше избегать, по возможности.
• Нейросети — отличный помощник, но базу надо иметь свою. Иначе через месяц не вспомнишь, что и зачем писал.
А у вас как с опытом в веб-фреймворках? Долго переваривали переход на классы? Делали ли перерывы и как быстро втягивались обратно?
📸 Скриншоты
Ниже накидаю несколько кадров того, что получилось. Мне кажется около половины времени я трачу только на красивый визуальный результат. Рационально ли?🫣 Реакции и комментарии приветствуются)