Урок 2: Шаблон Model-View-Template (MVT) – Как MVC, но с магией и без головной боли
Привет снова, кодовый волшебник! 🧙♂️ Если ты здесь, поздравляю — ты успешно прошел Урок 1 (и, надеюсь, клавиатура осталась цела). Теперь пришло время нырнуть в главное магическое оружие Django: шаблон Model-View-Template (MVT). Это как MVC, но без боли и с большей долей магии.
Сегодня мы также создадим твою первую модель для блог-постов. К концу этого урока ты уже будешь гнуть данные под себя, как настоящий колдун. 🪄
Шаг 1: Активируем виртуальную среду (или заходим в логово волшебника)
Перед тем как бросаться заклинаниями (читай: запускать команды Django), нам нужно войти в наше волшебное логово — виртуальную среду. Если ты её ещё не активировал, открывай терминал, переходи в каталог своего проекта и вводи:
source venv/bin/activate
Теперь ты в магическом мире — каждый раз, когда будешь видеть (venv)
в начале строки терминала, знай: это твой личный Хогвартс для кодеров, но с Python вместо палочек.
Шаг 2: Создаем приложение Blog (Потому что каждому магу нужна мастерская)
Теперь, когда ты в логове, время настроить приложение blog. Это твоя мастерская, где твои блоговые чары обретут жизнь. Выполни команду:
python3 manage.py startapp blog
Django выполнит свою магию и создаст каталог blog
, где будут жить все нужные компоненты — модели, представления, шаблоны. Это как получить новый магический свиток, но с меньшими шансами сжечь его.
Шаг 3: Зарегистрируем приложение в settings.py
(Делаем всё по-настоящему)
Теперь, когда приложение blog существует, надо рассказать об этом Django. Открывай файл settings.py
и добавь 'blog'
в список INSTALLED_APPS
:
INSTALLED_APPS = [
# Другие установленные приложения...
'blog',
]
Теперь твой блог официально часть мира Django. Это как вписать своё имя в магический реестр Хогвартса — но без уроков по защите от тёмных искусств.
Шаг 4: Создаем модель BlogPost (Время творить магию)
Приступим к самому интересному! Пора создать модель BlogPost, которая будет представлять все твои будущие блог-посты. В Django модели — это магические чертежи для твоих данных. Открывай файл models.py
в каталоге blog
и добавляй код:
from django.db import models
class BlogPost(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
Что здесь происходит?
title
: Поле, где будет храниться заголовок поста. Максимум 200 символов, потому что слишком длинные заголовки — это как похвальба перед магглами.content
: Само тело поста. Тут произойдет магия (или твой поток сознания).created_at
: Время создания поста. Django всё сделает за тебя, как невидимый домовик.__str__
: Этот метод помогает Django показать что-то полезное при обращении к посту. Заголовок поста тут будет к месту, потому что “Пост №42 без названия” не звучит круто.
Шаг 5: Создаем и применяем миграции (Объясним базе данных, что к чему)
Теперь, когда модель BlogPost
определена, нужно донести эту новость до базы данных. Это где миграции приходят на помощь. Миграции — это как магические свитки, которые объясняют базе данных, что она должна сделать.
- Сначала создаем файл миграции:
python3 manage.py makemigrations
Django скажет что-то вроде: “Миграции для ‘blog’: 0001_initial.py” — это значит, что Django тебя понял.
- Теперь применим миграцию к базе данных:
python3 manage.py migrate
И вот, у тебя теперь есть таблица для блог-постов в базе данных. Если прислушаться, можно почти услышать, как она шепчет: “Я готова к твоим мудрым мыслям (или фоткам котов)”.
Шаг 6: Админка Django для управления постами (Теперь ты властелин!)
Одна из самых крутых фишек Django — это админка. Это как командный пункт, где ты управляешь своими постами, как маг, повелевающий свитками.
Но сначала надо зарегистрировать модель BlogPost
в админке. Открой admin.py
в каталоге blog
и добавь:
from django.contrib import admin
from .models import BlogPost
admin.site.register(BlogPost)
Теперь запускай сервер:
python3 manage.py runserver
Переходи на http://127.0.0.1:8000/admin/. Если ты ещё не создал суперпользователя (того самого админа), сделай это сейчас:
python3 manage.py createsuperuser
Django попросит ввести имя пользователя, email и пароль. Не волнуйся, не обязательно использовать заклинание, просто придумай что-то надёжное (например, “непароль123”).
Теперь, войдя в админку, ты увидишь модель BlogPost
, готовую к управлению. Ты можешь добавлять, редактировать и удалять посты блога, не применяя волшебные палочки.
Шаг 7: Публикуем посты на сайте (Пусть все увидят твою магию!)
Отлично! Мы создали посты и управляем ими в админке. Теперь давай покажем их миру — потому что какой смысл в блоге, если никто не видит твои записи (или хотя бы мама)?
- Добавляем представление: Открой
views.py
в каталогеblog
и создадим представление, которое будет получать все посты из базы данных и отправлять их в шаблон:
from django.shortcuts import render
from .models import BlogPost
def blog_index(request):
posts = BlogPost.objects.all().order_by('-created_at')
return render(request, 'blog_index.html', {'posts': posts})
- Создаём шаблон: Внутри каталога
blog
создай папкуtemplates
(если её ещё нет). Затем создай файлblog_index.html
:
<!DOCTYPE html>
<html>
<head>
<title>Мой Блог</title>
</head>
<body>
<h1>Добро пожаловать в мой блог!</h1>
<ul>
{% for post in posts %}
<li><strong>{{ post.title }}</strong> - {{ post.created_at }}</li>
<p>{{ post.content }}</p>
{% endfor %}
</ul>
</body>
</html>
Этот шаблон будет выводить все посты блога, отображая заголовок, дату и контент для каждого. Когда ты посетишь URL блога, твои посты наконец-то увидят свет (или хотя бы их увидит твой друг).
Шаг 8: Настраиваем urls.py
(Магический путь)
Теперь нужно подключить наше представление блога к проекту Django. Для этого создадим URL-маршрут, чтобы когда кто-то зашел на /blog
, Django знал, что нужно показать список постов блога.
- Создай
urls.py
для блога: В каталогеblog
создай новый файл под названиемurls.py
и добавь следующий код:
from django.urls import path
from . import views
urlpatterns = [
path('', views.blog_index, name='blog_index'),
]
- Подключаем URL-ы блога к основному
urls.py
: Теперь открой основной файлurls.py
в каталогеmyblog
и добавь туда наш блог:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')), # Добавляем блог
]
Это говорит Django подключить все URL-ы блога, когда кто-то посещает /blog/
.
Заключение урока 2
Ты просто мастер! 🎉 Ты создал своё первое приложение в Django, определил модель для постов, настроил URL-маршруты и показал посты на сайте. Теперь ты почти как маг Django! 🧙♂️
В следующем уроке мы добавим формы — ведь блог без комментариев или возможности написать автору – это просто дневник. Ну а пока наслаждайся своей победой и смело хвастайся кодом (и может даже заслужил шоколадку?). Ты точно это заслужил!
Смотрите также
- Урок 6 – Делегирование событий: Эффективность на кончиках пальцев
- Урок 5 – Магия событий: Делаем страницы интерактивными
- Урок 4 – Манипуляция DOM: Управляем Элементами Страницы
- Урок 6: Профили Пользователей – Потому что Каждому Нужна Своя Минутка Славы
- Урок 2 – Циклы и Условия: Принимаем Решения и Повторяемся (Без Сумасшествия)