Проект блога на Django
В этой главе вы с нуля создадите проект блога с помощью Django и поймёте структуру проекта и жизненный цикл запроса.
Подготовка окружения
Django — это Python-веб-фреймворк; сначала нужно проверить окружение Python.
Откройте терминал и проверьте версию Python (требуется 3.8 или выше):
$ python3 --version Python 3.12.0
Создайте виртуальное окружение и установите Django
Виртуальное окружение — стандартная практика для проектов на Python: оно даёт каждому проекту независимые зависимости, не мешающие друг другу.
$ python3 -m venv venv # 创建虚拟环境 $ source venv/bin/activate # 激活虚拟环境(Windows:venv\Scripts\activate) (venv) $ pip install django # 在虚拟环境中安装 Django
Проверьте, успешно ли прошла установка:
(venv) $ python -m django --version 5.0
Каждый раз при открытии нового терминала сначала необходимо выполнить это
source venv/bin/activateАктивируйте виртуальное окружение. Приглашение терминала в начале(venv)Означает, что вы сейчас находитесь в виртуальном окружении.
Создайте проект Django
Django предоставляетdjango-admin startprojectИспользуйте команду для инициализации проекта.
(venv) $ django-admin startproject blog_project (venv) $ cd blog_project
После выполнения будет создана следующая структура каталогов:
blog_project/ ├── manage.py # 项目管理入口(启动服务器、执行迁移、创建 admin 等) ├── blog_project/ # 项目配置包 │ ├── __init__.py # 标识这是一个 Python 包 │ ├── settings.py # 全局配置(数据库、中间件、模板、静态文件等) │ ├── urls.py # 根 URL 路由表 │ ├── wsgi.py # WSGI 部署入口(生产环境用) │ └── asgi.py # ASGI 部署入口(WebSocket 用)
Запустите сервер разработки
(venv) $ python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). Starting development server at http://127.0.0.1:8000/
Откройте http://127.0.0.1:8000/ в браузере; если вы видите приветственную страницу Django, значит запуск прошёл успешно.
Сервер разработки поддерживает горячую перезагрузку: после сохранения изменённого кода сервер автоматически перезапускается. Нажмите Ctrl+C, чтобы остановить сервер.
Ключевые замечания по настройке settings.py
settings.pyявляется центральным файлом конфигурации проекта Django, и каждый параметр конфигурации имеет ясное значение.
| Элемент конфигурации | Значение по умолчанию | Функция |
|---|---|---|
| DEBUG | True | Режим разработки (после развёртывания необходимо установить False) |
| DATABASES | SQLite | Конфигурация базы данных (по умолчанию SQLite, дополнительная установка не требуется) |
| INSTALLED_APPS | Список встроенных приложений | Приложения, зарегистрированные в проекте |
| TEMPLATES | DjangoTemplates | Конфигурация шаблонизатора |
| LANGUAGE_CODE | 'en-us' | Язык (можно изменить на 'zh-hans') |
| TIME_ZONE | 'UTC' | Часовой пояс (можно изменить на 'Asia/Shanghai') |
Измените язык и часовой пояс на китайскую среду:
Пример
LANGUAGE_CODE = 'zh-hans' # Интерфейс администратора отображается на китайском
TIME_ZONE = 'Asia/Shanghai' # Установите часовой пояс на пекинское время
Создайте первое приложение: blog
Организация проекта Django такова:Проект содержит несколько приложений.。
Каждое приложение отвечает за независимый функциональный модуль (например, блоги, пользователи, комментарии).
(venv) $ python manage.py startapp blog
После выполнения создаётся каталог blog/:
blog/ ├── __init__.py ├── admin.py # 后台管理配置(第三章用到) ├── apps.py # 应用配置 ├── models.py # 数据库模型(第二章用到) ├── views.py # 视图函数(本章用到) ├── urls.py # 需要手动创建(应用级路由) └── migrations/ # 数据库迁移文件(第二章用到)
После создания приложения его нужно зарегистрировать в settings.py:
Пример
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # Добавлено: зарегистрировать приложение blog
]
Жизненный цикл запроса Django
Понимание того, как проходят запросы в Django, помогает быстро находить проблемы в дальнейшем.
Просмотр deviceInput URL → urls.py matchRouting → логика обработки views.py → templates рендерят HTML → return просмотр device。
Эти три шага (URL → представление → шаблон) — это каркасная схема разработки на Django.

Практика: ваша первая страница на Django
Шаг 1: Напишите функцию представления (views.py)
Пример
from django.shortcuts import render
# Функция представления: получает запрос, возвращает ответ
def index(request):
# Роль render: объединить request + template + data, вернуть HTML-ответ
return render(request, 'blog/index.html', {
'welcome': 'Добро пожаловать в EXAMPLE Blog',
'intro': Это сайт-витрина личного блога, созданный с помощью Django.
})
Шаг 2: Создайте файл шаблона (templates)
Создайте в каталоге blog/templates/blog/подкаталог, затем создайтеindex.html。
Пример
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>EXAMPLE Blog</title>
<style>
body { font-family: sans-serif; max-width: 800px; margin: 0 auto; padding: 40px 20px; }
h1 { color: #2c3e50; }
</style>
</head>
<body>
<h1>{{ welcome }}</h1>
<p>{{ intro }}</p>
</body>
</html>
Использование переменных шаблона Django
{{ variable name }}Синтаксис такой же, как у интерполяционного выражения Vue3. Данные словаря, передаваемые в render в views.py, можно использовать в шаблоне напрямую.
Шаг 3: Настройка маршрутизации (urls.py)
Сначала создайте его в blog/urls.pyВ качестве маршрутизации уровня приложения.
Пример
from django.urls import path
from . import views
# Таблица маршрутизации приложения
urlpatterns = [
path('', views.index, name='index'), # Пустой путь соответствует / Home
]
Затем в urls.py уровня проекта используйтеinclude()Импортируйте маршруты приложения:
Пример
from django.contrib import admin
from django.urls import path, include # Импорт include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')), # Подключите маршруты приложения blog к корневому пути
]
Итоги главы
В этой главе вы выполнили три вещи: создали виртуальную среду и установили Django, инициализировали проект с помощью startproject/startapp и написали полную цепочку Представление → Шаблон → URL.
Главный вывод: понимать иерархию проект/приложение Django и освоить трёхэтапную схему разработки URL → Представление → Шаблон.
Другие расширения