Spec-Zone.ru › Django 6.0

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

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

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

Оно будет состоять из двух частей:

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

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

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

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

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

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

Если у вас возникли трудности при прохождении этого руководства, перейдите в раздел Получение помощи в часто задаваемых вопросах.

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

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

В командной строке cd перейдите в каталог, в котором вы хотите хранить код, и выполните следующую команду, чтобы создать новый проект Django:

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

В результате будет создан каталог djangotutorial, внутри которого находится проект с именем mysite. Для Django имя каталога не имеет значения; вы можете переименовать его как угодно. Если команда не сработала, см. раздел Проблемы при запуске 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 вашего проекта. Его имя — это имя пакета Python, которое понадобится для импорта объектов из него (например, mysite.urls).
  • mysite/__init__.py: Пустой файл, указывающий Python, что этот каталог следует считать пакетом Python. Если вы только начинаете изучать Python, прочитайте подробнее о пакетах в официальной документации Python.
  • mysite/settings.py: Настройки и конфигурация этого проекта Django. В разделе Настройки Django подробно описано, как они работают.
  • mysite/urls.py: Объявления URL-адресов этого проекта Django — «оглавление» сайта на Django. Подробнее об URL-адресах читайте в разделе Диспетчер URL-адресов.
  • mysite/asgi.py: Точка входа для веб-серверов, совместимых с ASGI, которые обслуживают ваш проект. Подробнее см. в разделе Развёртывание с помощью ASGI.
  • mysite/wsgi.py: Точка входа для веб-серверов, совместимых с WSGI, которые обслуживают ваш проект. Подробнее см. в разделе Развёртывание с помощью WSGI.

Сервер разработки

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

$ 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.

September 24, 2025 - 15:50:53
Django version 6.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/6.0/howto/deployment/

Примечание

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

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

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

Важно помнить: не используйте этот сервер в производственной среде. Он предназначен только для разработки. (Мы создаём веб-фреймворки, а не веб-серверы.)

(О том, как запустить сайт на другом порту, см. справочник по runserver.)

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

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

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

Теперь, когда среда — «проект» — настроена, можно приступать к работе.

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

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

Чем проект отличается от приложения? Приложение — это веб-приложение, выполняющее какую-либо задачу, например система для ведения блога, база данных общедоступных записей или небольшое приложение для опросов. Проект — это набор конфигураций и приложений для определённого сайта. Проект может содержать несколько приложений. Одно приложение может входить в состав нескольких проектов.

Ваши приложения могут находиться в любом месте в пути поиска Python. В этом руководстве мы создадим приложение для опросов внутри каталога 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 и добавьте в него следующий код Python:

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() позволяет ссылаться на другие URLconf. Когда Django встречает include(), он отбрасывает ту часть URL-адреса, которая совпала до этого момента, и передаёт оставшуюся строку подключённому URLconf для дальнейшей обработки.

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

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

При подключении других шаблонов URL-адресов всегда используйте include(). Единственное исключение — admin.site.urls, готовый URLconf, предоставляемый Django для стандартного сайта администратора.

Теперь вы подключили представление index к URLconf. Проверьте, работает ли оно, выполнив следующую команду:

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

Откройте в браузере адрес http://localhost:8000/polls/. Вы должны увидеть текст «Здравствуйте, мир. Вы находитесь на главной странице опросов.», который вы определили в представлении index.

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

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

Когда вы освоитесь с основным циклом обработки запросов и ответов, прочитайте часть 2 этого руководства, чтобы начать работу с базой данных.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/intro/tutorial01/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API