• 3.1
  • 3.2
  • 6.1
  • Версия документации: 5.0

Создаём своё первое приложение с Django, часть 1

Давайте учиться на примере.

Мы создадим проект, состоящий из простого приложения для голосования.

Проект будет состоять из двух частей:

  • Публичный сайт, который позволяет людям видеть голосования и иголосовать.

  • Интерфейс администратора, который позволяет вам добавлять, изменять и удалять голосования.

Мы предполагаем, что вы уже установили Django. Вы можете проверить это, проверив какая версия установлена, выполнив следующую команду в консоли (обозначена префиксом $):

$ python -m django --version
...\> py -m django --version

Если Django установлен, вы должны увидеть текущую версию. Иначе получите ошибку «No module named django».

Учебник написан для Django 5.1, которая поддерживает Python 3.6 и выше. Если версия Django отличается, вы можете обратиться к документации, соответствующей версии Django, или обновить Django до последней версии. Если вы все еще используете старую версию Python, обратитесь к Какие версии Python можно использовать с Django?, чтобы найти совместимую версию Django.

Где получить помощь:

При наличии проблем с данной инструкцией, пожалуйста, обратитесь к разделу FAQ Получение помощи.

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

Если вы используете Django первый раз, вам придется позаботиться о некоторых первоначальных настройках. А именно, сгенерировать основу проекта Django – настройки проекта, базы данных, приложений и др.

Используя командную строку, перейдите (cd) в каталог, где вы хотите хранить код, и выполните следующую команду:

$ mkdir djangotutorial
...\> mkdir djangotutorial

Затем, запустите следующую команду для создания нового проекта Django:

$ django-admin startproject mysite djangotutorial
...\> django-admin startproject mysite djangotutorial

Будет создан новый проект под названием mysite внутри директории djangotutorial. Если не сработало, посмотрите Трудности с запуском django-admin.

Примечание

Вы не должны использовать в качестве названия проекта названия компонентов Python или Django. Это означает, что проект не может называться django (что конфликтует с Django) или test (конфликтует со стандартным пакетом Python).

Давайте посмотрим, что было создано при помощи команды startproject:

djangotutorial/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

Рассмотрим эти файлы:

  • manage.py: Скрипт, который позволяет вам взаимодействовать с проектом Django. Подробности о manage.py читайте в разделе django-admin и manage.py.

  • mysite/: Директория, в которой содержится актуальный пакет Python для вашего проекта. Его имя вы будете использовать, когда понадобится импортировать что-то из него (к примеру, mysite.urls).

  • mysite/__init__.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python. (Если вы новичок в Python, читайте о покетах в официальной документации Python.)

  • mysite/settings.py: Настройки/конфигурация проекта. Раздел Настройки Django расскажет вам все о настройках проекта.

  • mysite/urls.py: Конфигурация URL-ов для вашего проекта Django. Это «содержание» всех Django-сайтов. Вы можете прочитать о конфигурации URL-ов в разделе Менеджер URL-ов.

  • mysite/wsgi.py: Точка входа вашего проекта для ASGI-совместимых веб-серверов. Подробности читайте в разделе Как развернуть проект с помощью ASGI.

  • mysite/wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов. Подробности читайте в разделе Как развертывать приложение WSGI.

Сервер для разработки

Давайте убедимся, что ваш Django проект работает. Перейдите в папку djangotutorial, если вы еще этого не сделали, и запустите следующую команду commands:

$ python manage.py runserver
...\> py manage.py runserver

Вы увидите следующий вывод:

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

февраля 14, 2026 - 15:50:53
Django version 5.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Примечание

Игнорируйте предупреждения о невыполненных миграциях, мы разберёмся с базой данных чуть позже.

Теперь, когда сервер запущен, перейдите на страницу http://127.0.0.1:8000/ в браузере. Вы увидите страницу «Congratulations!» со взлетающей ракетой. Работает!

Только что вы запустили сервер для разработки Django, простой Web-сервер написанный на Python. Мы включили его в Django, чтобы вы сразу могли приступить к разработке, без дополнительной настройки боевого веб-сервера – например, Apache – пока вам это действительно не понадобится.

Следует заметить: НИКОГДА НЕ используйте этот сервер на «живом» сайте. Он создан исключительно для разработки. (Мы умеем делать Web-фреймворки, не Web-сервера.)

(Для запуска сайта на другом порте, посмотрите runserver.)

Автоматическая перезагрузка runserver

Dev-сервер самостоятельно перегружается при изменении Python файлов. Однако некоторые действия не перегружают сервер, например, добавление новых файлов. В таких случаях необходимо самостоятельно перегрузить сервер.

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

Теперь, после создания окружения (проекта), мы можем приступить к работе.

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

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

Какая разница между приложением и проектом? Приложение – это Web-приложение, которое предоставляет определенный функционал – например, Web-блог, хранилище каких-то записей или простое приложение для голосования. Проект – это совокупность приложений и конфигурации сайта. Проект может содержать несколько приложений. Приложение может использоваться несколькими проектами.

Ваши приложения могут располагаться где угодно в Python path. В этом уроке мы создадим приложение опросник внутри папки djangotutorial.

Создавая приложение, убедитесь, что вы находитесь в том же каталоге, что и файл manage.py, и выполните команду:

$ python manage.py startapp polls
...\> py manage.py startapp polls

Будет создана директория polls, содержимое которой будет выглядеть примерно так:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

Эти файлы являются частью приложения голосования.

Напишите свое первое представление

Настало время создать первое представление. Откройте файл polls/views.py и добавьте следующий код:

polls/views.py
from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

Так выглядит самое простое представление в Django. Чтобы увидеть его в браузере, Нам нужно привязать его к какому-нибудь URL, а для этого нам необходимо создать конфигурацию URL, или короче, «URLconf». Эти конфигурации URL определяются внутри каждого приложения Django, и представляют они собой обычные Python файлы с названием urls.py.

Для определения URLconf для приложения polls создайте файл polls/urls.py со следующим содержимым:

polls/urls.py
from django.urls import path

from . import views

urlpatterns = [
    path("", views.index, name="index"),
]

Директория вашего приложения теперь должна выглядеть так:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

В качестве следующего шага создадим глобальный URLconf в проекте mysite и включим в него URLconf, созданный в polls.urls. Для этого добавим импорт для django.urls.include в mysite/urls.py и вставим в него include() в список urlpatterns, все это будет выглядеть так:

mysite/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("polls/", include("polls.urls")),
    path("admin/", admin.site.urls),
]

Функция path() принимает минимум два аргумента: route и view. Функция include() позволяет размещать ссылку на другие URLconfs. Когда Django видит include(), он отсекает часть URL, которая сооветствует этому инклюду, и оставшуюся строку отправляет во включенный URLconf для дальнейшей обработки.

Идея include() в том, чтобы создать легко подключаемые URL-ы. Т.к. приложение для голосования содержит собственную конфигурацию URL-ов (polls/urls.py), они могут быть подключены в «/polls/», или «/fun_polls/», или «/content/polls/», или любой другой путь, и приложение будет работать.

Когда использовать include()

Вы всегда должны использовать include() при включении других шаблонов URL. Файл admin.site.urls является единственным исключением из этого.

Теперь вы связали представление index в настройках URL-ов. Проверим его работоспособность, запустив команду:

$ python manage.py runserver
...\> py manage.py runserver

Откройте в браузере http://localhost:8000/polls/, вы должны увидеть текст «Hello, world. You’re at the polls index.», который вы указали в представлении index.

Страница не найдена?

Если вы получаете страницу с ошибкой, проверьте, что вы идёт на http://localhost:8000/polls/ , а не на http://localhost:8000/.

Изучив основы о запросах и ответах, приступим ко второй части учебника, чтобы начать работать с базой данных.

Back to Top