Урок 2: Шаблон Model-View-Template (MVT) – Как MVC, но с магией и без головной боли


Lesson2

Урок 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 определена, нужно донести эту новость до базы данных. Это где миграции приходят на помощь. Миграции — это как магические свитки, которые объясняют базе данных, что она должна сделать.

  1. Сначала создаем файл миграции:
python3 manage.py makemigrations

Django скажет что-то вроде: “Миграции для ‘blog’: 0001_initial.py” — это значит, что Django тебя понял.

  1. Теперь применим миграцию к базе данных:
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: Публикуем посты на сайте (Пусть все увидят твою магию!)

Отлично! Мы создали посты и управляем ими в админке. Теперь давай покажем их миру — потому что какой смысл в блоге, если никто не видит твои записи (или хотя бы мама)?

  1. Добавляем представление: Открой 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})
  1. Создаём шаблон: Внутри каталога 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 знал, что нужно показать список постов блога.

  1. Создай urls.py для блога: В каталоге blog создай новый файл под названием urls.py и добавь следующий код:
from django.urls import path
from . import views

urlpatterns = [
    path('', views.blog_index, name='blog_index'),
]
  1. Подключаем 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! 🧙‍♂️

В следующем уроке мы добавим формы — ведь блог без комментариев или возможности написать автору – это просто дневник. Ну а пока наслаждайся своей победой и смело хвастайся кодом (и может даже заслужил шоколадку?). Ты точно это заслужил!


Смотрите также