Создаём своё первое приложение с 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/.
Изучив основы о запросах и ответах, приступим ко второй части учебника, чтобы начать работать с базой данных.