JavaRush /Курси /Модуль 3: Django /Приклад структури застосунку: views, urls, models

Приклад структури застосунку: views, urls, models

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

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

У Django є три ключових компоненти, які працюють разом: моделі (models) для збереження даних, представлення (views) для обробки запитів і маршрути (urls) для спрямування користувачів. Сьогодні ми розберемо, як ці компоненти взаємодіють і створимо простий, але повноцінний застосунок блогу.

Для початку давайте подивимось, як зазвичай влаштований застосунок у Django і що робить кожен файл у цій структурі.

Таймлайн структури застосунку в Django

Типова структура застосунку виглядає так:

my_project/
    |-- my_app/
        |-- migrations/
        |-- templates/
        |-- static/
        |-- __init__.py
        |-- admin.py
        |-- apps.py
        |-- models.py
        |-- tests.py
        |-- urls.py
        |-- views.py

Давайте розберемо ролі кожного компонента в структурі.

  1. migrations/: папка, де Django зберігає файли міграцій для синхронізації ваших моделей з базою даних.
  2. templates/: тут живуть HTML-шаблони для рендеру сторінок.
  3. static/: місце для CSS, JavaScript та інших статичних файлів.
  4. admin.py: конфігурація для Django Admin, де ви можете зареєструвати свої моделі.
  5. apps.py: файл конфігурації застосунку (створюється автоматично).
  6. models.py: тут ми оголошуємо моделі застосунку.
  7. tests.py: файл для написання unit-тестів.
  8. urls.py: тут описуються маршрути застосунку.
  9. views.py: тут живе логіка обробки запитів і повернення даних.

Побудова структури для додатку "Блог"

Ми вже створювали додаток "Блог", можете використати його. Але на всяк випадок коротко повторимо основні кроки. Ми використовуємо моделі, представлення (views) і маршрути (urls), щоб об'єднати все в єдине ціле.

Крок 1: Створення додатку

Спочатку створимо новий додаток:

python manage.py startapp blog

Тепер додайте додаток у INSTALLED_APPS файлу settings.py:

INSTALLED_APPS = [
    ...
    'blog',
    ...
]

Крок 2: Створюємо моделі для додатку

Зазирнемо у файл models.py нашого додатку і додамо наступні моделі:

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    bio = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.name


class Category(models.Model):
    name = models.CharField(max_length=50)
    description = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.name


class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    published_date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    categories = models.ManyToManyField(Category)

    def __str__(self):
        return self.title

Тут ми описали три моделі:

  • Author: для зберігання інформації про авторів статей.
  • Category: для класифікації статей.
  • Article: для збереження контенту статей, з прив'язкою до автора (через ForeignKey) і категорій (через ManyToManyField).

Крок 3: Створюємо міграції

Після створення моделей, не забудьте виконати міграції, щоб зміни застосувалися до бази даних:

# Створюємо файл міграції
python manage.py makemigrations

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

Крок 4: Створення представлень (views)

Тепер ми перейдемо до написання представлень у файлі views.py. Представлення — це місце, де ми обробляємо запити і повертаємо відповіді.

Додамо кілька простих представлень:

from django.http import HttpResponse
from django.shortcuts import render
from .models import Article

def home(request):
    return HttpResponse("Ласкаво просимо в блог!")

def article_list(request):
    articles = Article.objects.all()
    return render(request, 'blog/article_list.html', {'articles': articles})

def article_detail(request, pk):
    article = Article.objects.get(pk=pk)
    return render(request, 'blog/article_detail.html', {'article': article})
  • home: просте представлення, яке повертає текстову відповідь.
  • article_list: вивід списку всіх статей.
  • article_detail: вивід детальної інформації про одну статтю.

Крок 5: налаштування маршрутів (urls.py)

Тепер створимо маршрути для нашого додатку. Для цього створимо файл urls.py у папці додатку blog:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
    path('articles/', views.article_list, name='article_list'),
    path('articles/<int:pk>/', views.article_detail, name='article_detail'),
]
  • path('', views.home): зв'язує корінь маршруту додатку з представленням home.
  • path('articles/'): зв'язує шлях /articles/ з представленням article_list.
  • path('articles/<int:pk>/'): зв'язує шлях /articles/{id} з представленням article_detail.

Не забудьте підключити маршрути додатку в основному urls.py проєкту:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

Маршрут blog/ буде обробляти всі запити, що починаються з /blog.

Крок 6: Шаблони (templates)

Створимо папку templates/blog у директорії додатку і додамо два файли:

article_list.html:

<h1>Список статей</h1>
<ul>
    {% for article in articles %}
        <li><a href="/blog/articles/{{ article.id }}/">{{ article.title }}</a></li>
    {% endfor %}
</ul>

article_detail.html:

<h1>{{ article.title }}</h1>
<p><strong>Автор:</strong> {{ article.author.name }}</p>
<p><strong>Контент:</strong> {{ article.content }}</p>
<p><strong>Опубліковано:</strong> {{ article.published_date }}</p>

Ці шаблони рендерять HTML-сторінки для списку статей і детальної інформації про статтю.

Крок 7: Оживляємо додаток

Тепер наш додаток "Блог" готовий до запуску. Запустіть сервер командою:

python manage.py runserver

Відкрийте браузер на http://127.0.0.1:8000/blog/articles/ — ви повинні побачити список статей з бази даних. Клікніть на будь-яку статтю, щоб переглянути її деталі.

Практичне завдання

  1. Додайте нове представлення для відображення списку авторів.
  2. Створіть маршрут для нового представлення.
  3. Напишіть відповідний шаблон для відображення авторів.
  4. Подумайте, як можна покращити структуру коду додатка (наприклад, додавши розділення на модулі).

Вітаю, ви щойно освоїли одну з ключових концепцій Django — організацію додатка! Тепер ваш код стає більш структурованим і готовим до розширення.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ