JavaRush /Курсы /Модуль 3: Django /Создание структуры проекта в Django

Создание структуры проекта в Django

Модуль 3: Django
2 уровень , 3 лекция
Открыта

В этой лекции мы изучим:

  1. Основы структуры проекта Django: разберёмся, что это за странные папки и файлы, которые появляются при создании нового проекта.
  2. Команда django-admin startproject: создадим новый проект с её помощью и исследуем его.
  3. Масштабируемая структура приложения: обсудим, как организовать проект так, чтобы "лет через пять" он всё ещё оставался понятным вам и вашей команде.

Основы структуры проекта Django

Когда мы создаём новый проект Django, он создаёт базовую структуру. На первый взгляд она может показаться немного непонятной, но не волнуйтесь, мы всё разложим по полочкам.

Вот как выглядит структура проекта по умолчанию:

myproject/                # Корневая директория проекта
├── manage.py            # Главный "оркестр" проекта
├── myproject/           # Пакет проекта
│   ├── __init__.py      # Указывает, что это Python-пакет
│   ├── settings.py      # Настройки проекта
│   ├── urls.py          # Основной файл маршрутов
│   ├── asgi.py          # Настройки для ASGI-сервера (для асинхронных проектов)
│   └── wsgi.py          # Настройки для WSGI-сервера (для развертывания)

⚠️ Некоторые файлы вначале выглядят "абракадаброй". Не пытайтесь всё заучить! Мы будем разбирать их постепенно в следующих лекциях.

Краткий обзор ключевых файлов:

  1. manage.py: главный дирижёр вашего проекта. Он помогает запускать сервер, создавать приложения, выполнять миграции и много других крутых вещей.

    • Например, чтобы запустить сервер, вы введёте:
      python manage.py runserver
      
  2. settings.py: сердце проекта. Здесь хранятся все настройки, такие как информация о базе данных, конфигурация приложений и многое другое. Обязательно подружимся с ним на следующей лекции.

  3. urls.py: место, где роутятся все пути вашего приложения. Хотите настраивать маршруты и сказать, какой URL должен куда привести? Вам сюда.

  4. asgi.py и wsgi.py: файлы, которые помогают развернуть проект на сервере. Пока что можете воспринимать их, как "что-то важное для жизни проекта на продакшене". Не трогаем их без необходимости.

  5. __init__.py: делает директорию Python-пакетом. Зачем? Чтобы Python знал, что можно импортировать файлы из этой директории.

Использование команды django-admin startproject

Теперь, пора двигаться от слов к практике! Давайте создадим наш собственный проект и посмотрим, как магия превращается в структуру.

  1. Создайте виртуальное окружение (если ещё не сделали):

    python -m venv env
    source env/bin/activate  # для Linux/Mac
    env\Scripts\activate     # для Windows
    
  2. Убедитесь, что Django установлен:

    pip install django
    
  3. Создайте новый проект с командой django-admin startproject:

    django-admin startproject myproject
    

    Это создаст папку myproject с описанной ранее структурой.

  4. Перейдите в созданный проект:

    cd myproject
    
  5. Запустите сервер, чтобы убедиться, что всё работает:

    python manage.py runserver
    

    Откройте http://127.0.0.1:8000/ в браузере. Если видите стандартную приветственную страницу Django — поздравляю! Это первый шаг к величию.

Организация проекта для масштабируемого приложения

По мере того как проект растёт, хаос может превратить его в "кодовый ад". Чтобы этого избежать, важно изначально позаботиться об организации.

Проблема стандартной структуры

Вот стандартная структура, после создания нового проекта:

myproject/
├── myproject/
│   ├── settings.py
│   ├── urls.py

Если вы хотите написать большой проект с множеством приложений и настройками для разработки, тестирования и продакшена — такая структура может стать неудобной.

Рекомендуемая масштабируемая структура

Предлагаем модифицировать проект и организовать его примерно так:

myproject/
├── apps/                # Здесь будут лежать все ваши приложения
├── config/              # Настройки проекта
│   ├── __init__.py      
│   ├── settings/
│   │   ├── base.py      # Основные настройки
│   │   ├── dev.py       # Настройки для разработки
│   │   └── prod.py      # Настройки для продакшена
│   ├── urls.py          
│   ├── wsgi.py
│   └── asgi.py
├── manage.py            
├── requirements.txt     

Почему так?

  1. Каталог apps/:

    • Все ваши приложения (например, "блог", "магазин") будут находиться в одном месте.
    • Удобно искать и управлять.
  2. Каталог config/:

    • Настройки теперь раздельные для разных сред: base.py, dev.py и prod.py.
    • Легче делать деплой, и вы случайно не включите DEBUG=True на продакшене (а это чревато, как оставить ключи от дома на столе в кафе).

Как настроить разделение настроек?

В файле manage.py и wsgi.py можно указать, с каким файлом использовать настройки:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.dev')

Теперь, если вы в продакшене, измените dev на prod.

Практическое задание

  1. Создайте проект Django с именем myproject.
  2. Организуйте структуру так, как было показано выше (с apps и config).
  3. Настройте разделение настроек на base.py, dev.py и prod.py.

Совет: начните с копирования содержимого settings.py в base.py, а потом разделите параметры, специфичные для разработки и продакшена.

Вот и всё! Теперь вы знаете, как создать проект Django и организовать его для долгой и счастливой жизни.

1
Задача
Модуль 3: Django, 2 уровень, 3 лекция
Недоступна
Создание базовой структуры проекта Django
Создание базовой структуры проекта Django
1
Задача
Модуль 3: Django, 2 уровень, 3 лекция
Недоступна
Создание файла URL и маршрутизации для приложения
Создание файла URL и маршрутизации для приложения
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Максим Уровень 55
15 октября 2025
store\urls.py ``` from django.urls import path from . import views urlpatterns = [ ``` ------ store\views.py ``` from django.http import HttpResponse ```