JavaRush /Курси /Модуль 3: Django /Практичне завдання зі створення повноцінного додатка

Практичне завдання зі створення повноцінного додатка

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

Ми навчилися створювати новий додаток за допомогою команди startapp, реєструвати додатки в INSTALLED_APPS. Ми також освоїли маршрутизацію на рівні додатків, створили свої urls.py і зрозуміли, як пов'язати їх із головним маршрутизатором проєкту. Окрім цього, ми розглянули організацію коду в додатку, написали перші моделі, виконали міграції і доторкнулися до магії Django ORM. З кожним кроком ми рухалися в напрямку створення реального додатка.

Тепер час зібрати все це докупи і створити повноцінний додаток. Готові? Погнали будувати наш "Блог"!

Покрокове керівництво зі створення застосунку "Блог"

Крок 1: Підготовка проєкту

Якщо у тебе ще немає Django-проєкту, створюємо його командою:

django-admin startproject mysite
cd mysite

Тепер створимо новий застосунок "blog":

python manage.py startapp blog

Додаємо наш новий застосунок у список INSTALLED_APPS у файлі mysite/settings.py. Наприкінці списку додай рядок:

INSTALLED_APPS = [
    ...
    'blog',
]

Крок 2: Визначення моделі

Модель "Post" (Стаття)

Переходимо у файл blog/models.py і описуємо модель для публікації:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)  # Заголовок статті
    content = models.TextField()  # Текст статті
    author = models.CharField(max_length=100)  # Автор статті
    created_at = models.DateTimeField(auto_now_add=True)  # Час створення
    updated_at = models.DateTimeField(auto_now=True)  # Час останнього оновлення

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

Застосування міграцій

Створюємо міграцію та застосовуємо її:

python manage.py makemigrations
python manage.py migrate

Тепер у базі даних є структура для зберігання наших статей (постів). Це було легше, ніж ти очікував, правда? 😉

Крок 3: Створення адмінки

Адмінка Django — це чудове місце для керування даними, особливо на ранніх етапах розробки. Зареєструємо модель "Post" в адмін-зоні.

У файлі blog/admin.py додаємо:

from django.contrib import admin
from .models import Post

admin.site.register(Post)  # Реєструємо модель для адмінки

Запускаємо сервер і заходимо в адмінку:

python manage.py runserver

Переходимо на http://127.0.0.1:8000/admin/ і перевіряємо, що модель "Post" успішно відображається.

Крок 4: Маршрути та представлення

Налаштування маршрутів (urls)

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

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),  # Маршрут для списку постів
    path('<int:id>>/', views.post_detail, name='post_detail'),  # Маршрут для деталей поста
]

Підключаємо маршрути застосунку "blog" до основного маршрутизатора проєкту, додавши наступний рядок у mysite/urls.py:

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),  # Підключаємо маршрути з застосунку "blog"
]

Написання представлень (views)

Тепер напишемо функції для відображення списку постів та деталей поста. У файлі blog/views.py додаємо:

from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request):
    posts = Post.objects.all().order_by('-created_at')  # Усі пости, відсортовані за датою створення
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, id):
    post = get_object_or_404(Post, id=id)  # Отримуємо пост за ID або видаємо 404
    return render(request, 'blog/post_detail.html', {'post': post})

Крок 5: Шаблони

Створюємо папку templates/blog всередині папки застосунку blog. Це місце, де будуть зберігатися наші HTML-шаблони.

Шаблон для списку постів

Створи файл templates/blog/post_list.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Список публікацій</title>
</head>
<body>
    <h1>Список публікацій</h1>
    <ul>
    {% for post in posts %}
        <li>
            <a href="{{ post.id }}/">{{ post.title }}</a>
            <p>Автор: {{ post.author }}</p>
            <p>Дата: {{ post.created_at }}</p>
        </li>
    {% endfor %}
    </ul>
</body>
</html>

Шаблон для деталей поста

Створи файл templates/blog/post_detail.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ post.title }}</title>
</head>
<body>
    <h1>{{ post.title }}</h1>
    <p><strong>Автор:</strong> {{ post.author }}</p>
    <p><strong>Дата:</strong> {{ post.created_at }}</p>
    <p>{{ post.content }}</p>
    <a href="/">Назад до списку</a>
</body>
</html>

Крок 6: Перевірка роботи застосунку

Запускаємо сервер, якщо він ще не працює:

python manage.py runserver

Переходимо на http://127.0.0.1:8000/ і перевіряємо:

  • Головна сторінка показує список публікацій.
  • Клік по назві публікації відкриває її деталі.

Якщо все працює як треба, ти щойно завершив створення повноцінного застосунку "Блог"! 🎉

Поради та типові помилки

  1. Помилка міграції моделей. Якщо ти забув виконати міграції після зміни моделі, Django видасть помилку. Перед запуском сервера завжди переконайся, що виконав команди makemigrations і migrate.

  2. Відсутність шаблонів. Якщо Django не може знайти шаблон, переконайся, що ти створив папку templates/ всередині застосунку та вказав правильний шлях під час виклику render().

  3. Помилка маршрутизації. Якщо сторінку не знайдено, перевір свої маршрути у urls.py. Можливо, ти забув підключити маршрути застосунку до головного маршрутизатора.

  4. DB-related помилки. Переконайся, що модель зареєстрована у models.py до застосування міграцій.

На практиці ти щойно створив простий, але функціональний застосунок. Це базовий рівень, але навіть це вже може бути корисним у роботі. У реальному житті такий застосунок часто використовується як основа для ведення блогів, корпоративних сайтів і навіть невеликих CMS. Тепер у тебе є всі інструменти, щоб рухатися далі! 🚀

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