Создание проекта и приложения

⏱ 15 мин · 🧩 заданий: 5

Что мы построим

Следующие два модуля посвящены одному большому проекту — блогу. Шаг за шагом мы реализуем:

  • модели постов с черновиками и публикацией;
  • настроенную админку;
  • списки и детальные страницы с красивыми URL;
  • постраничную навигацию;
  • отправку поста по email;
  • комментарии и теги;
  • похожие посты, собственные шаблонные теги;
  • карту сайта, RSS, PostgreSQL и полнотекстовый поиск.

Потом мы добавим пользователей, REST API и выложим блог в интернет.

Окружение

mkdir blog_project
cd blog_project
python -m venv venv
source venv/bin/activate          # Windows: venv\Scripts\activate
pip install django
pip freeze > requirements.txt

Проект и приложение

django-admin startproject mysite .
python manage.py startapp blog
blog_project/
├── manage.py
├── requirements.txt
├── mysite/
│   ├── settings.py
│   ├── urls.py
│   ├── asgi.py
│   └── wsgi.py
└── blog/
    ├── admin.py
    ├── apps.py
    ├── migrations/
    ├── models.py
    ├── tests.py
    └── views.py

Конфигурация приложения

blog/apps.py уже содержит класс конфигурации:

from django.apps import AppConfig


class BlogConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "blog"
    verbose_name = "Блог"     # добавим — так раздел будет называться в админке

Подключим приложение, указав этот класс:

# mysite/settings.py
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "blog.apps.BlogConfig",
]

Можно писать просто "blog" — Django найдёт конфигурацию сам. Полный путь делает это явным.

Базовые настройки

LANGUAGE_CODE = "ru"
TIME_ZONE = "Europe/Moscow"
USE_I18N = True
USE_TZ = True

С LANGUAGE_CODE = "ru" админка, сообщения валидации и даты будут на русском.

Кратко о других важных настройках, которые понадобятся дальше:

Настройка Зачем
DEBUG Подробные страницы ошибок. В продакшене — False!
SECRET_KEY Ключ для подписи сессий и токенов. Хранить в секрете
ALLOWED_HOSTS Домены, на которых может работать сайт (при DEBUG = False)
DATABASES Подключение к БД (пока SQLite)
STATIC_URL, STATIC_ROOT Статические файлы

Первый запуск

python manage.py migrate
python manage.py runserver

Откройте http://127.0.0.1:8000/ — стартовая страница Django. Дальше начинаем описывать данные блога.

Git с первого дня

Сразу инициализируйте репозиторий и добавьте .gitignore:

venv/
__pycache__/
*.pyc
db.sqlite3
.env
git init
git add .
git commit -m "Создан проект блога"

Это пригодится и для истории изменений, и для деплоя на сервер.

Итог

  • Проект mysite, приложение blog, подключение через blog.apps.BlogConfig.
  • Язык и часовой пояс — в settings.py.
  • Git — с первого коммита.

Практика решено 0 из 5

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Расставить по порядку

Расставьте команды для старта проекта блога в правильном порядке.

  1. pip install django
  2. django-admin startproject mysite .
  3. python -m venv venv
  4. mkdir blog_project && cd blog_project
  5. python manage.py startapp blog
  6. source venv/bin/activate
Задание 2 Написать код

Добавьте приложение блога в INSTALLED_APPS, указав его класс конфигурации BlogConfig из модуля blog.apps.

Задание 3 Несколько вариантов

Какие настройки стоит сразу поменять в settings.py для русскоязычного сайта?

Задание 4 Один вариант ответа

Для чего файл apps.py в приложении?

Задание 5 Практика (выполнить у себя)

Создайте проект mysite и приложение blog, подключите его и запустите runserver. Нажмите, когда увидите стартовую страницу Django.

Войдите, чтобы отмечать пройденные уроки.