Spec-Zone.ru › Django 5.2

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

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

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

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

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

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

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

Если Django установлен, вы увидите версию вашей установки. Если нет, вы получите ошибку, указывающую на «нет модуля django».

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

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

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

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

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

Из командной строки перейдите в каталог, где вы хотите хранить свой код, и создайте новый каталог с именем djangotutorial. (Имя этого каталога не имеет значения для Django; вы можете переименовать его в любое другое.)

$ 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 для вашего проекта. Его имя является именем пакета 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.

February 20, 2025 - 15:50:53
Django version 5.2, 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/5.2/howto/deployment/

Примечание

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

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

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

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

(Чтобы обслуживать сайт на другом порту, см. справку runserver.)

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

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

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

Теперь, когда ваша среда («проект») настроена, вы можете начать работу.

Каждое приложение, которое вы пишете в 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()

Вы всегда должны использовать include(), когда включаете другие шаблоны URL-адресов. Единственным исключением является 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/5.2/intro/tutorial01/

Spec-Zone.ru

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