Ми навчилися створювати новий додаток за допомогою команди 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/ і перевіряємо:
- Головна сторінка показує список публікацій.
- Клік по назві публікації відкриває її деталі.
Якщо все працює як треба, ти щойно завершив створення повноцінного застосунку "Блог"! 🎉
Поради та типові помилки
Помилка міграції моделей. Якщо ти забув виконати міграції після зміни моделі, Django видасть помилку. Перед запуском сервера завжди переконайся, що виконав команди
makemigrationsіmigrate.Відсутність шаблонів. Якщо Django не може знайти шаблон, переконайся, що ти створив папку
templates/всередині застосунку та вказав правильний шлях під час викликуrender().Помилка маршрутизації. Якщо сторінку не знайдено, перевір свої маршрути у
urls.py. Можливо, ти забув підключити маршрути застосунку до головного маршрутизатора.DB-related помилки. Переконайся, що модель зареєстрована у
models.pyдо застосування міграцій.
На практиці ти щойно створив простий, але функціональний застосунок. Це базовий рівень, але навіть це вже може бути корисним у роботі. У реальному житті такий застосунок часто використовується як основа для ведення блогів, корпоративних сайтів і навіть невеликих CMS. Тепер у тебе є всі інструменти, щоб рухатися далі! 🚀
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ