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

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

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

Давайте углубимся в создание приложений и организации их структуры.

Напомним, под приложением (app) в Django понимают модуль или компонент проекта, который решает определенную задачу. Django позволяет разбивать проект на отдельные независимые приложения, что делает код более читаемым, модульным и удобным для масштабирования. Одно и то же приложение можно использовать в нескольких проектах или интегрировать в собственный проект сторонние приложения, созданные другими разработчиками.

Пример: представьте, что у вас есть проект веб-сайта. В нем могут быть следующие приложения:

  • Блог (blog)
  • Авторизация пользователей (users)
  • Управление заказами (orders)

Каждое из них — отдельное приложение.

Напоминание: что внутри нашего приложения

На прошлом занятии мы создали приложение blog. После запуска команды startapp blog в вашем проекте появится следующая структура:

blog/
    __init__.py         # Делает эту папку модулем Python.
    admin.py            # Код для настройки админ-зоны.
    apps.py             # Конфигурация приложения.
    migrations/         # Папка для миграций базы данных.
        __init__.py
    models.py           # Определение моделей базы данных.
    tests.py            # Тесты для приложения.
    views.py            # Представления, отвечающие за бизнес-логику.
  • __init__.py: Этот файл просто сообщает Python, что папка blog — это модуль. Пока он пуст, и вас это устраивает.
  • admin.py: Используется для регистрации моделей в Django Admin (к этому вернемся позже).
  • apps.py: Указывает настройки приложения. Например, здесь указывается его имя.
  • migrations/: Хранит файлы миграций для отслеживания изменений схемы базы данных.
  • models.py: Здесь мы будем задавать модели для базы данных.
  • tests.py: Файл для написания тестов. Пока нам с ним нужно лишь подружиться.
  • views.py: Здесь хранится основная бизнес-логика: как обрабатывать HTTP-запросы.

Организация кода внутри приложения

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

  • urls.py: Для маршрутов (вместо добавления их на уровне проекта).
  • forms.py: Для работы с формами.
  • templates/: Для хранения HTML-шаблонов.
  • static/: Для CSS, JS или изображений.

Рекомендации по организации:

  1. Разделяйте логику: храните маршруты в urls.py, бизнес-логику в views.py, а модели — в models.py.
  2. Используйте папки: если код становится слишком большим, разбивайте его на подпапки (например, services/ для вспомогательной логики).

Пример улучшенной структуры:

blog/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
    urls.py          # Отдельный файл для маршрутов.
    templates/       # Шаблоны HTML для приложения.
        blog/
            index.html
    static/          # Статические файлы.
        blog/
            styles.css

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

В прошлом занятии мы создали приложение со списком блогов с помощью команды

python manage.py startapp blog

Папка blog создастся автоматически.

Давайте продолжим.

  1. Добавляем файл urls.py

    Создайте файл urls.py внутри папки blog:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),  # Маршрут для главной страницы блога
    ]
  2. Добавляем представление в views.py

    Откройте файл views.py и определите функцию index, отвечающую за отображение главной страницы блога:

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Добро пожаловать в блог!")
  3. Регистрируем маршрутизатор приложения в urls.py проекта

    Теперь нужно сообщить основному проекту о нашем приложении и его маршрутах. Откройте файл urls.py проекта (в корне) и внесите изменения:

    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/', include('blog.urls')),  # Включаем маршруты блога
    ]
  4. Запускаем сервер

    Запустите сервер:

    python manage.py runserver
    

    Откройте в браузере http://127.0.0.1:8000/blog/ и вы увидите сообщение "Добро пожаловать в блог!".

Что делать, если что-то пошло не так?

Если вы запутались в маршрутизации, не забывайте:

  1. Проверить, добавили ли вы приложение в INSTALLED_APPS.
  2. Убедиться, что путь в include() указан правильно.
  3. Проверить, что файл urls.py содержит urlpatterns.

Если сервер ругается на отсутствующие файлы — будьте спокойны, Django почти всегда подсказывает, где вы ошиблись.

Теперь у нас есть готовое приложение "Блог"!

1
Задача
Модуль 3: Django, 6 уровень, 1 лекция
Недоступна
Создание нового приложения
Создание нового приложения
1
Задача
Модуль 3: Django, 6 уровень, 1 лекция
Недоступна
Добавление модели в приложение
Добавление модели в приложение
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Евгений Уровень 85
13 августа 2025
По 2ой задаче (Добавление модели в приложение) валидатор в PyCharm не пропускает решение по п.3 Созданное приложение `blog` должно быть добавлено в список `INSTALLED_APPS` в файле настроек проекта (`settings.py`). Рекомендации: "Добавьте 'blog' в список INSTALLED_APPS в файле settings.py" Но ни blog , ни blog.apps.BlogConfig (из ответа) добавленные в INSTALLED_APPS не проходят. Полное копирование содержимого settings.py из решения также не помогает.