Ось твій урок у стилі CS50 українською мовою.
🎓 CS50 Style: Вступ до Django та філософія "Батарейок у комплекті"
Привіт, друзі! 👋
1. 🔥 Вступ: Чому ми не хочемо писати все з нуля?
Уявіть, що ви вирішили відкрити піцерію. 🍕 У вас є два шляхи:
- Шлях "хардкорного інженера": Ви самі вирощуєте пшеницю, самі будуєте піч із глини, самі куєте ножі з металу, і тільки потім — печете піцу.
- Шлях "шеф-кухаря": Ви орендуєте професійну кухню, де вже є піч, холодильники, ножі та навіть заготовки тіста. Ви просто приходите і починаєте творити кулінарні шедеври.
У світі веб-розробки Python — це ваша мова спілкування. Але якщо ви почнете писати сайт на "чистому" Python, вам доведеться обробляти мережеві сокети, парсити HTTP-заголовки вручну і писати SQL-запити для кожної коми. Це шлях №1. Це довго, боляче і небезпечно.
Django — це шлях №2. Це та сама професійна кухня.
Виникає питання: Навіщо витрачати час на вивчення цього "монстра", якщо можна написати простий скрипт? А тому, що в реальному світі (Instagram, Pinterest, National Geographic — усі вони використовують Django) нам потрібна швидкість, безпека і масштабованість.
Сьогодні ми розберемося, що це за інструмент і чому розробники кажуть, що у нього "батарейки в комплекті".
2. 🧠 Теоретична база: Що "під капотом"?
Django — це високорівневий веб-фреймворк на Python. Але що це означає?
Фреймворк vs Бібліотека
Це важливо зрозуміти інтуїтивно:
* Бібліотека (наприклад, requests або math) — це інструмент. Ви берете молоток і забиваєте цвях. Ви керуєте кодом.
* Фреймворк (Django) — це каркас будинку. Ви не можете будувати стіни де завгодно; каркас диктує правила. Код керує вами (у хорошому сенсі). Він каже: "Поклади логіку сюди, а шаблон сюди, і я зроблю все інше".
Філософія MTV (Model - Template - View)
Django використовує архітектуру, яку часто плутають з MVC, але тут вона називається MTV. Давайте уявимо ресторан:
- Model (Модель) — це Комірник. Він знає, де лежать продукти (дані) і як їх дістати з холодильника (бази даних). Йому байдуже, як ви це приготуєте, його задача — дати чисті дані.
- View (Представлення) — це Офіціант (або Менеджер). Це мозок. Він отримує замовлення від клієнта (URL), каже комірнику (Model) "дай мені помідори", а потім передає їх на кухню.
- Template (Шаблон) — це Кухар/Сервіровка. Він бере дані від офіціанта і "красиво розкладає їх на тарілці" (генерує HTML-сторінку), яку побачить клієнт.
❗️ Запам’ятайте: Django розділяє логіку (Python) і зовнішній вигляд (HTML). Це дозволяє змінювати дизайн, не ламаючи роботу сайту.
"Batteries Included" (Батарейки в комплекті)
Це головний девіз Django. Це означає, що вам не треба шукати окремі бібліотеки для: * Адмін-панелі (вона генерується сама! 🤯), * Реєстрації користувачів, * Роботи з базою даних, * Захисту від хакерських атак.
Все це вже є всередині.
3. 🧪 Приклади: Від болю до магії
Давайте подивимось, як це виглядає на практиці.
Очікування студента:
Як ви думаєте, як виглядає код, що дістає всіх користувачів з бази даних?
Приклад 1: "Чистий" Python + SQL (Як ми НЕ хочемо робити)
# Багато коду для підключення до БД...
cursor = connection.cursor()
query = "SELECT * FROM users WHERE active = 1;" # А якщо помилився в SQL?
cursor.execute(query)
users = cursor.fetchall()
# Тепер це треба вручну перетворити в об'єкти...
Чому це погано? Це небезпечно (SQL-ін'єкції) і незручно читати.
Приклад 2: Django ORM (Магія ✨)
# Ми просто звертаємось до класу User
users = User.objects.filter(active=True)
Пояснення: Django ORM (Object-Relational Mapping) дозволяє працювати з базою даних як зі звичайними Python-об'єктами. Ви пишете на Python, а Django сам перекладає це в ідеальний SQL.
Приклад 3: Маршрутизація (URL)
Уявіть, що користувач заходить на site.com/blog/my-first-post.
Django (urls.py):
path('blog/<str:slug>/', views.post_detail)
Django бачить цю адресу, розуміє, що <str:slug> — це змінна частина ("my-first-post"), і автоматично передає її у вашу функцію post_detail. Вам не треба парсити рядок вручну!
4. 🛠 Практична частина
Час забруднити руки! Відкривайте термінал.
Завдання 1: Ініціалізація Встановіть Django (якщо ще ні) і створіть проект.
pip install django
django-admin startproject my_kitchen .
(Зверніть увагу на крапку в кінці — вона важлива, щоб не створювати зайву вкладену папку!)
Завдання 2: Розвідка
Зайдіть у папку і подивіться на файли. Знайдіть manage.py.
* Запустіть сервер: python manage.py runserver
* Відкрийте браузер за посиланням, яке вам видав термінал (зазвичай http://127.0.0.1:8000).
* Питання: Що ви бачите? (Ви маєте побачити ракету, що злітає 🚀. Це означає, що "кухня" готова).
Завдання 3: "А що, якщо..."
Зупиніть сервер (Ctrl+C). Спробуйте видалити файл db.sqlite3 (якщо він вже з'явився). Запустіть сервер знову.
* Що сталося? Нічого страшного?
* Пояснення: Django побачив, що бази немає, і створить її знову при першій необхідності (але вона буде порожньою).
Завдання 4: Міні-кейс (на папері або в голові) Уявіть, що ми робимо клон Instagram. Розподіліть ролі по MTV: 1. Фотографія котика і кількість лайків. 2. HTML-сторінка, де ця фотка відображається в рамочці. 3. Функція, яка перевіряє, чи має право користувач бачити це фото.
(Відповідь: 1 - Model, 2 - Template, 3 - View)
5. 💡 Мислення як у розробника
Як думає досвідчений Django-розробник?
- Don't Reinvent the Wheel (Не винаходь велосипед).
- Помилка новачка: Писати свою систему скидання паролю.
- Профі: Гуглить "django password reset" і знаходить готові вбудовані
views.
- Fat Models, Thin Views (Товсті моделі, худі представлення).
- Намагайтеся записувати складну логіку даних у Моделі (Chef), а не перевантажувати Офіціанта (View). Нехай офіціант просто носить їжу, а не готує її біля столу.
- Читайте документацію.
- Документація Django — одна з найкращих у світі IT. Це ваша кулінарна книга.
6. 🧩 Підсумок
Сьогодні ми не написали багато коду, але ми зробили дещо важливіше — ми зрозуміли філософію.
✅ Ви тепер знаєте: * Що Django — це не просто бібліотека, а цілий завод (фреймворк). * Як працює тріо MTV (Model-Template-View). * Чому ми любимо ORM (ніякого сирого SQL!). * Як запустити "ракету" локально.
🔜 У наступній серії: Ми змусимо цю ракету летіти туди, куди нам треба! Ми розберемо Routing (Маршрутизацію) і створимо нашу першу власну сторінку "Hello, World", яка буде реагувати на дії користувача.
А поки — спробуйте не зламати manage.py! 😉
До зустрічі! 👨💻