Мы научились создавать новое приложение с помощью команды 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>
</liv
{% 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. Теперь у вас есть все инструменты, чтобы двигаться дальше! 🚀
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
>в маршруте'<int:id>>/'2. Шаблоны: Шаблон для списка постов: templates/blog/post_list.html Некорректный закрывающий тег</livвместо</li>