🏠 Практика: расширение Django-проекта

⚡ Задание кратко

Расширить проект из практикума: добавить второй view about_view, шаблон about.html через render(), маршрут /about/, подключить все к git.

Это не LMS-ДЗ. Данный раздел — закрепляющее задание по материалу практикума 4. Источник не содержит отдельного домашнего задания — ДЗ по теме Django было выдано в уроке 13 (ДЗ 7). Здесь предлагается самостоятельная практика для углубления навыков.

Задание: расширить проект вторым view и шаблоном

Цель

Взять Django-проект, который вы создали в ходе практикума 4, и добавить в него:

  1. Второе представление about_view, которое рендерит HTML-шаблон
  2. Шаблон about.html с базовой HTML-структурой и переменной контекста
  3. URL-маршрут /about/ к новому view
  4. Закоммитить результат в git

Пошаговое решение

Шаг 1: Создать папку templates

# Структура папок
first_app/
├── templates/
│   └── first_app/
│       └── about.html   # шаблон создадим ниже
├── views.py
├── urls.py
└── ...

Django ищет шаблоны в подпапке templates/ каждого зарегистрированного приложения. Вложенная папка first_app/ — это namespace, чтобы имена шаблонов не конфликтовали между приложениями.

Шаг 2: Убедитесь, что APP_DIRS включён в settings.py

# config/settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,   # должен быть True
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Шаг 3: Создать шаблон about.html

<!-- first_app/templates/first_app/about.html -->
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>About</title>
</head>
<body>
  <h1>About this project</h1>
  <p>Author: {{ author }}</p>
  <p><a href="/first/">Back to first view</a></p>
</body>
</html>

Шаг 4: Добавить about_view в views.py

# first_app/views.py
from django.http import HttpResponse
from django.shortcuts import render

def first_view(request):
    return HttpResponse("<h1>Hello! It's my first view!</h1>")

def about_view(request):
    context = {
        'author': 'Django Developer',
    }
    return render(request, 'first_app/about.html', context)

Шаг 5: Добавить маршрут /about/ в urls.py

# first_app/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('first/', views.first_view, name='first_view'),
    path('about/', views.about_view, name='about_view'),  # добавить
]

Шаг 6: Проверка

python manage.py runserver

Откройте http://127.0.0.1:8000/about/ — должна появиться страница с заголовком «About this project» и именем автора.

Шаг 7: Коммит в git

git init                          # если ещё не инициализирован
echo ".env" >> .gitignore         # защитить секреты
echo "db.sqlite3" >> .gitignore
git add .
git commit -m "feat: add about view with template"

Подготовка окружения

# Windows PowerShell
python -m venv venv
.\venv\Scripts\activate
pip install django django-environ

# Проверка установки
python -m django --version    # должно вывести 5.x.x

Проверка в VS Code

  1. Откройте папку проекта в VS Code: File → Open Folder
  2. Откройте встроенный терминал: Ctrl+` (или Terminal → New Terminal)
  3. Активируйте виртуальное окружение: .\venv\Scripts\activate
  4. Запустите сервер: python manage.py runserver
  5. Откройте в браузере http://127.0.0.1:8000/about/

Точки останова (отладка)

Создайте файл .vscode/launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Django",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "args": ["runserver"],
            "django": true
        }
    ]
}

Нажмите F5 для запуска в режиме отладки. Установите точку останова в about_view кликом слева от номера строки.

Связь с разделами курса