JavaRush /Курси /Модуль 3: Django /Основні компоненти Django

Основні компоненти Django

Модуль 3: Django
Рівень 1 , Лекція 9
Відкрита

Сьогодні ми розберемося в основних компонентах Django, які роблять цей фреймворк таким магічним і корисним. А в самому кінці лекції ви зрозумієте: нічого магічного тут немає — лише добре продумана структура.

Уявіть собі Django як ковальський інструмент для веб-розробки. Щоб створити веб-додаток, ви повинні розуміти, з яких частин складається цей інструмент, як вони взаємодіють між собою. Це не тільки допоможе вам писати код ефективніше, але й убереже від типових помилок. Рухаючись вперед, розуміння цих принципів дозволить вам створювати гнучкі, масштабовані додатки, які відповідають принципу DRY (Don’t Repeat Yourself).

Тож пристібайтесь, друзі, ми вирушаємо в тур по ключових компонентах Django!

Архітектурний підхід Django: MTV

Ви напевно чули про MVC (Model-View-Controller) — один із найпопулярніших архітектурних патернів для побудови застосунків. Django використовує його адаптовану версію, яку називає MTV (Model-Template-View).

Ось коротке співставлення MTV з MVC:

MVC MTV
Model Model
View Template
Controller View

Детальніше:

  • Model: працює з даними, описує структуру бази даних і надає API для їх обробки.
  • Template: відповідає за відображення даних користувачу. Тут ми визначаємо, як наші сторінки виглядають.
  • View: логіка обробки запитів. Саме тут відбувається магія зв'язування моделей і шаблонів.

Основні компоненти Django

Тепер, коли ми знаємо про MTV, давайте розглянемо ключові елементи, які відіграють найважливішу роль у кожному Django-додатку.

1. Моделі (Models)

Моделі — це основа взаємодії з базою даних. У Django моделі визначаються у файлі models.py всередині кожного додатку. Кожен клас моделі трансформується в таблицю в базі даних.

Приклад моделі:

from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=100)  # Текстове поле з обмеженням довжини
    content = models.TextField()             # Велике текстове поле
    author = models.CharField(max_length=50) # Автор поста
    created_at = models.DateTimeField(auto_now_add=True)  # Дата створення

    def __str__(self):
        return self.title  # Для зручного відображення в адмінці

Чому це важливо? Кожного разу, коли ви працюєте з даними (додаєте, змінюєте, видаляєте), ви взаємодієте з моделями. Вони — основа для всієї логіки роботи з даними.

2. Представлення (Views)

Представлення у Django — це "контролери" між користувачем і вашою бізнес-логікою. Тут відбувається обробка запитів і передача даних у шаблони.

Приклад функції представлення:

from django.http import HttpResponse

def homepage(request):
    return HttpResponse("Ласкаво просимо на наш сайт!")

Приклад трохи складніше, що повертає HTML-шаблон:

from django.shortcuts import render

def homepage(request):
    context = {"greeting": "Ласкаво просимо на наш сайт!"}
    return render(request, 'home.html', context)

Помічаєте, як шаблон і представлення взаємодіють одне з одним? Це ключ.

3. Шаблони (Templates)

Шаблони керують фронтендом: HTML, CSS і, можливо, трохи JavaScript. Django пропонує власну мову шаблонів — Django Template Language (DTL).

Приклад шаблону home.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Головна</title>
</head>
<body>
    <h1>{{ greeting }}</h1>
</body>
</html>

Все, що знаходиться у подвійних фігурних дужках {{ }}, це плейсхолдери для даних, переданих із представлення.

4. Маршрутизація (URLs)

Коли користувач заходить на сайт, він бачить URL-адресу в браузері. Наприклад, www.myblog.com/home. Django має "зрозуміти", як обробити цей запит. Для цього ми створюємо маршрути у файлі urls.py.

Приклад файлу urls.py:

from django.urls import path
from . import views  # Імпортуємо наші представлення

urlpatterns = [
    path('', views.homepage, name='homepage'),  # Пов'язуємо маршрут із функцією homepage
]

5. Адмін-панель (Admin)

Django надає вбудовану зручну адмін-панель, яка дозволяє керувати контентом, не звертаючись до SQL. Щоб працювати з моделлю в адмінці, її потрібно зареєструвати.

Приклад реєстрації моделі у admin.py:

from django.contrib import admin
from .models import BlogPost

admin.site.register(BlogPost)

Це додасть можливість керувати записами моделі BlogPost в адмінці.

6. Файли налаштувань (Settings)

Файл settings.py містить конфігурацію вашого проєкту: бази даних, налаштування статичних файлів, параметри безпеки. Ось як це виглядає:

Приклад:

DEBUG = True  # Увімкнений режим відладки

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / "db.sqlite3",
    }
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',  # Додаємо наш додаток "blog"
]

7. Статичні файли (Static Files)

Ваші CSS-, JS-, та зображення потрапляють у категорію "статичних файлів". Django надає механізми для їх управління через STATIC_URL і STATICFILES_DIRS.

Приклад:

STATIC_URL = '/static/'  # Основний шлях для статичних файлів
STATICFILES_DIRS = [
    BASE_DIR / "static",  # Папка, де будуть зберігатися статичні файли
]

8. Міграції

Міграції — це механізм синхронізації моделей із базою даних. При створенні або зміні моделі Django генерує міграцію, яка потім застосовується до бази даних.

Приклад:

# Створення міграції
python manage.py makemigrations

# Застосування міграції
python manage.py migrate

Приклад взаємодії компонентів

Давайте зберемо все разом:

  1. Створюємо модель BlogPost.
  2. Реєструємо її в адмінці.
  3. Пишемо функцію представлення, щоб вивести список постів.
  4. Додаємо маршрут у urls.py.
  5. Пишемо шаблон для відображення постів.

Функція представлення:

from django.shortcuts import render
from .models import BlogPost

def blog_posts(request):
    posts = BlogPost.objects.all()  # Отримуємо всі пости
    return render(request, 'blog_posts.html', {'posts': posts})

Шаблон blog_posts.html:

<!DOCTYPE html>
<html>
<head>
    <title>Наші пости</title>
</head>
<body>
    <h1>Список постів</h1>
    <ul>
        {% for post in posts %}
            <li>{{ post.title }} - {{ post.author }}</li>
        {% endfor %}
    </ul>
</body>
</html>

Маршрут:

from django.urls import path
from . import views

urlpatterns = [
    path('posts/', views.blog_posts, name='blog_posts'),
]

Тепер можна перейти за адресою /posts/ і побачити ваші записи, гарно відрендерені у браузері.

3
Опитування
Створення нового проекту Django, рівень 1, лекція 9
Недоступний
Створення нового проекту Django
Створення нового проекту Django
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ