Что такое manage py
Перейти к содержимому

Что такое manage py

  • автор:

Руководство по Django часть 2: создание скелета

Это вторая статья из нашего руководства по Django, которая показывает, как можно создать «скелет» сайта, как фундамент, на котором можно строить всё остальное: настройки, ссылки, модели, контроллеры и представления.

Необходимо: Настройка окружения. Прочитать первую статью руководства по Django.
Цель: Научиться использовать инструменты Django для создания новых веб-сайтов.

Обзор

Эта статья показывает, как можно создать «скелет»(прототип) сайта, который затем можно расширить при помощи различных настроек, url адресов, моделей, представлений, и шаблонов (эти темы будут объясняться в последующих статьях).

  1. Использовать django-admin для создания папки проекта, шаблонов остальных файлов, и скрипта для управления проектом (manage.py).
  2. Использовать manage.pyдля создания одного или нескольких приложений.

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

Для Сайта местной библиотеки папка сайта и проекта будет называться locallibrary, и у нас будет одно приложение с названием catalog. Верхняя структура проекта будет следующей:

# Папка сайта manage.py # Скрипт для управления проектов (создан manage.py) locallibrary/ # Папка сайта/проекта (создана manage.py) catalog/ # Папка приложения (также создана manage.py) 

Следующие разделы статьи разложат по полочкам этапы создания «скелета», и покажут вам, как можно проверить сделанные изменения. В конце статьи мы обсудим некоторые другие настройки сайта, которые можно назначить на этом этапе.

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

Для начала откройте командную строку/терминал, перейдите в ту папку, куда вы хотите поместить проект Django(лучше в папке профиля пользователя C:\Users\user_name , при запуске командной строки используется именно эта директория), и создайте папку для вашего нового сайта (в данном случае: locallibrary). Затем войдите в эту папку, используя команду cd:

mkdir locallibrary cd locallibrary 

Создайте новую папку, используя команду django-admin startproject как в примере ниже, и затем зайдите в созданную папку.

. cd locallibrary 

Команда django-admin создаст файловую структуру, как в примере ниже:

Новая строка указывает на файл конфигурации приложения ( CatalogConfig ), который был создан в /locallibrary/catalog/apps.py , когда вы создали приложение.

Примечание: Легко заметить, что в INSTALLED_APPS уже подключено большое количество приложений (и объектов MIDDLEWARE , ниже в файле конфигурации). Они добавляют поддержку админ-панели Django и, как следствие, огромное количество функциональности (включая сессии, аутентификацию и прочее).

Настройка базы данных

На этом шаге обычно указывают базу данных для будущего проекта — имеет смысл использовать для разработки и размещённого в Сети одну и ту же базу данных, по возможности, чтобы исключить различия в поведении. Про различные варианты вы можете прочитать в документации Django в разделе Базы данных.

Мы будем использовать базу данных SQLite для этого проекта, потому что не предполагаем большое количество одновременных запросов на неё, а ещё потому, что для её настройки совсем не надо ничего делать! Вы можете видеть, что база данных уже настроена в settings.py (подробная информация указана ниже):

=  'default':  'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), > > 

Так как мы используем SQLite, то нам не нужно ничего делать.

Другие настройки проекта

Файл settings.py так же применяется и для некоторых других настроек, но на данном шаге имеет смысл поменять разве что TIME_ZONE — это значение должно быть представлено строкой, указанной в списке часовых поясов tz (колонка TZ в таблице, в строке временной зоны, которая вам нужна). Измените TIME_ZONE на одну из строк из таблицы, которая отвечает вашему часовому поясу. Например:

= 'Europe/Moscow' 

В файле присутствует две настройки, которые не нужно менять сейчас, но о назначении которых следует знать:

  • SECRET_KEY . Это секретный ключ, который используется Django для поддержки безопасности сайта. Если вы раскроете этот ключ в процессе разработки кому-либо, то необходимо будет его сменить (возможно считать его с какого-либо файла на сервере или переменной окружения) когда будете размещать проект на сервер.
  • DEBUG . Включает подробные сообщения об ошибках, вместо стандартных HTTP статусов ответов. Должно быть изменено на False на сервере, так как эта информация очень много расскажет взломщикам.

Подключение URL-адреса

При создании сайта, был создан файл сопоставления URL (urls.py) в корне проекта. Хотя можно использовать его для обработки всех URL адресов, более целесообразно подключать отдельные файлы сопоставлений для каждого приложения.

Откройте locallibrary/locallibrary/urls.py и обратите внимание на закомментированный текст, который объясняет суть происходящего.

""" locallibrary URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.10/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.urls import path from django.contrib import admin urlpatterns = [ path('admin/', admin.site.urls), ] 

URL соотношения хранятся в переменной urlpatterns , которая является списком функций path() . Каждая path() функция или ассоциирует шаблон URL_ с контроллером(views) или же его с другим таким списком (во втором случае, первый URL становится «базовым» для других, которые определяются в дочернем списке). Список urlpatterns инициализирует список функции, которая, например, соотносит _admin/ с модулем admin.site.urls , который содержит собственный файл-соотноситель.

Добавьте строчки, приведённые ниже в низ файла urls.py , чтобы добавить новый элемент в список urlpatterns . Этот элемент содержит url() который направляет запросы с URL catalog/ к модулю catalog.urls (файл с относительным путём /catalog/urls.py).

# Используйте include() чтобы добавлять URL из каталога приложения from django.urls import include from django.urls import path urlpatterns += [ path('catalog/', include('catalog.urls')), ] 

Теперь давайте перенаправим корневой URL нашего сайта (например 127.0.0.1:8000 ) на URL 127.0.0.1:8000/catalog/ ; это единственное приложение, которое мы собираемся использовать, поэтому это вполне разумно. Чтобы это использовать, нам понадобится специальная функция ( RedirectView ), которая принимает первым параметром новый относительный URL на который следует перенаправлять ( /catalog/ ) когда указанный в функции url() адрес соотносится с адресом запроса (корневой URL, в данном случае).

Добавьте следующие строчки, тоже в конец файла:

# Добавьте URL соотношения, чтобы перенаправить запросы с корневого URL, на URL приложения from django.views.generic import RedirectView urlpatterns += [ path('', RedirectView.as_view(url='/catalog/', permanent=True)), ] 

Django не размещает статические файлы(CSS, JavaScript, и изображения) по умолчанию, но это было бы крайне полезно на этапе разработки нашего сайта. В самом конце нашего URL соотносителя, можно включить размещение статических файлов.

Добавьте последнюю часть в конец файла:

# Используйте static() чтобы добавить соотношения для статических файлов # Только на период разработки from django.conf import settings from django.conf.urls.static import static urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Примечание: Существуют различные способы дополнения списка urlpatterns (в примере мы просто добавляли объект, используя оператор += чтобы чётко разделить изначальный и дописанный код). Вместо этого, мы могли бы добавить соотношения внутрь определения переменной:

urlpatterns = [ path('admin/', admin.site.urls), path('catalog/', include('catalog.urls')),path('', RedirectView.as_view(url='/catalog/', permanent=True)), ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Кроме того, мы добавили import вниз файла ( from django.urls import include ) ,чтобы видеть, что мы добавили, но обычно все инструкции import добавляются в верхнюю часть файла.

Напоследок, создайте файл urls.py внутри папки catalog, и добавьте следующий код, чтобы определить (пустой) urlpatterns . Сюда мы будем добавлять наши URL соотношения, по мере разработки сайта.

from django.urls import path from . import views urlpatterns = [ ] 

Тестирование работы скелета

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

До этого, нам предстоит впервые запустить миграцию базы данных. Это обновит нашу базу данных и добавит туда необходимые модели (и уберёт некоторые предупреждения, которые были бы показаны при попытке запуска).

Запуск миграций базы данных

Django использует Объектный Соотноситель Связей (ORM) чтобы соотносить определения моделей в Django приложении со структурами данных, которые используются базой данных. Когда мы меняем наши модели, Django отслеживает изменения и может создать файлы миграций (в папке /locallibrary/catalog/migrations/) чтобы применить соответствующие структуры данных к базе, чтобы та соответствовала модели.

При создании сайта, Django автоматически добавил несколько моделей, чтобы мы могли их использовать в админ-панели (о которой мы поговорим позже). Выполните следующие команды, чтобы создать нужные таблицы в базе данных, соответствующие этим моделям (убедитесь, что вы находитесь в папке с manage.py):

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

Команда makemigrations создаёт (но не применяет) миграции для всех приложений, которые установлены в ваш проект (вы так же можете указать в конце имя конкретного приложения, чтобы создать миграции только для него). Это даёт вам возможность проверить код перед тем, как их применить — когда вы станете хорошо разбираться в Django, то сможете даже менять их!

Команда migrate применяет созданные миграции к базе (Django отслеживает, какие миграции были созданы для данной базы).

Примечание: Посмотрите раздел Миграции в документации Django чтобы получить информацию о менее распространённых командах для управления миграциями.

Запуск сайта

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

Примечание: Отладочный веб-сервер не настолько функционален и производителен, для постоянного размещения , но это самый простой способ запустить свой сайт на Django и проверить его на наличие ошибок. По умолчанию, он разместит сайт на вашем компьютере (http://127.0.0.1:8000/), но вы так же можете указать различные компьютеры в вашей сети для этой цели. Для получения большего количества информации загляните в раздел django-admin и manage.py: отладочный сервер документации Django.

Запустите веб-сервер, используя команду runserver (в той же папке, что и manage.py):

bash
... System check identified no issues (0 silenced). September 22, 2016 - 16:11:26 Django version 1.10, using settings 'locallibrary.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK. 

Когда сервер запустится, вы сможете посетить сайт по адресу http://127.0.0.1:8000/ в вашем веб-браузере. Вы должны увидеть страницу с ошибкой, навроде этой:

Django debug page for a 404 not found error

Не волнуйтесь! Эта страница должна появиться и сообщить нам, что мы ещё не настроили ни одной страницы в модуле catalogs.urls (на который мы были перенаправлены запросили корневой URL сайта).

Примечание: Показанная выше страница открывает нам одно из замечательных свойств Django — автоматические отчёты об ошибках. На экране с ошибкой отображается множество полезной информации, когда страница не найдена, или ошибка была вызвана кодом. В данном случае, мы видим, что запрошенный URL не соответствует ни одному шаблону (из указанных). Подобные отчёты будут выключены при DEBUG=False (когда мы разместим приложение в Сеть), в этом случае будет показана менее информативная, но более дружелюбная к пользователю страница(которую вам надо будет создать - прим. переводчика).

На данном этапе, мы поняли, что Django работает должным образом!

Примечание: вам следует перезапускать миграцию и заново тестировать сайт, после того как вы делаете важные изменения. Поверьте, это не займёт много времени!

Домашнее задание

Папка catalog/ содержит файлы контроллеров(views), моделей(models), и других частей приложения. Просмотрите эти файлы.

Как было написано выше, URL соотноситель для админ-панели был подключён в файле urls.py. Войдите в административную часть и посмотрите, что произойдёт (вы можете найти URL из соотношения выше).

Подводя итоги

Теперь вы создали полноценный скелет веб-приложения, который теперь вы можете расширить url соотносителями, контроллерами(views) и моделями(models).

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

Также посмотрите эти статьи

  • Пишем своё первое приложение на Django - часть 1 (документация Django)
  • Приложения (документация Django). содержит информацию о настройке приложений.
  • Назад
  • Обзор: Django
  • Далее

Создание пользовательских команд управления в Django

Django распространяется с различными утилитами (командами), выполняемыми в командной строке, которые вызываются с помощью скрипта django-admin.py или manage.py (Custom Django Management Commands). Хорошая вещь в том, что вы также можете добавить свои собственные команды. Они могут хорошо помочь, когда необходимо взаимодействовать с приложением из командной строки терминала, а также их можно использовать в cron — утилите, использующейся для периодического выполнения заданий в определённое время.

Вступление

Перед тем, как начнем писать свои команды, ознакомимся с интерфейсом команднйо строки Django. Как минимум, при начале разработки в Django, вы должны были ознакомиться с такими командами, как startproject , runserver и collectstatic . Полный перечень встроенных команд можно узнать из справки:

python manage.py help

Результат будет примерно таким:

Type 'manage.py help ' for help on a specific subcommand. Available subcommands: [auth] changepassword createsuperuser [contenttypes] remove_stale_contenttypes [django] check compilemessages createcachetable dbshell diffsettings dumpdata flush inspectdb loaddata makemessages makemigrations migrate sendtestemail shell showmigrations sqlflush sqlmigrate sqlsequencereset squashmigrations startapp startproject test testserver [sessions] clearsessions [staticfiles] collectstatic findstatic runserver

Свои команды создаются в приложениях: создается каталог management, с вложенным каталогом commands. Пример:

mysite/ 

В качестве названия команды, вызываемой в команднйо строке используется имя файла. В нашем примере файл my_custom_command.py , так что команда будет вызываться следующим образом:

python manage.py my_custom_command

Основной пример

Создадим базовый пример своей команды:

management/commands/what_time_is_it.py

from django.core.management.base import BaseCommand from django.utils import timezone class Command(BaseCommand): help = 'Displays current time' def handle(self, *args, **kwargs): time = timezone.now().strftime('%X') self.stdout.write("It's now %s" % time)

В основном команда управления Django состоит из класса с именем Command , который наследуется от BaseCommand . Код команды должен быть определен внутри метода handle() .

Посмотрите, мы назвали наш модуль what_time_is_it.py . Эта команда может быть выполнена как:

python manage.py what_time_is_it

Вывод исполнения команды:

It's now 18:35:31

Возникает вопрос, чем это отличается от обычного скрипта Python или в чем его польза. Наилучшим преимуществом является то, что все возможности Django доступны и готовы к использованию, что можно импортировать модели, выполнять запросы в базу данных с помощью ORM Django и взаимодействовать со всеми ресурсами проекта.

Обработка аргументов

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

Позиционные аргументы

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

management/commands/create_users.py

from django.contrib.auth.models import User from django.core.management.base import BaseCommand from django.utils.crypto import get_random_string class Command(BaseCommand): help = u'Создание случайного пользователя' def add_arguments(self, parser): parser.add_argument('total', type=int, help=u'Количество создаваемых пользователей') def handle(self, *args, **kwargs): total = kwargs['total'] for i in range(total): User.objects.create_user(username=get_random_string(), email='', password='123')

Использование этой команды:

python manage.py create_users 10

Опциональные аргументы

Опциональные (и именованные) аргументы могут передаваться в любом порядке. В следующем примере находится определение аргумента prefix , который будет скомпонован с полем username .

management/commands/create_users.py

from django.contrib.auth.models import User from django.core.management.base import BaseCommand from django.utils.crypto import get_random_string class Command(BaseCommand): help = 'Создание случайного пользователя' def add_arguments(self, parser): parser.add_argument('total', type=int, help='Количество создаваемых пользователей') # Optional argument parser.add_argument('-p', '--prefix', type=str, help='Префикс для username', ) def handle(self, *args, **kwargs): total = kwargs['total'] prefix = kwargs['prefix'] for i in range(total): if prefix: username = '_'.format(prefix=prefix, random_string=get_random_string()) else: username = get_random_string() User.objects.create_user(username=username, email='', password='123')
python manage.py create_users 10 --prefix custom_user
python manage.py create_users 10 -p custom_user

Если указан префикс, то поле username будет, например, таким: custom_user_oYwoxtt4vNHR . Без указания префикса результат будет следующим: oYwoxtt4vNHR , т. е. просто случайная строка.

Флаговые аргументы

Один из типов необязательных аргументов — это флаг, который использует булевый тип. Давайте добавим флаг — admin , для указания команде создать суперпользователя или обычного пользователя, если флаг не указан.

management/commands/create_users.py

from django.contrib.auth.models import User from django.core.management.base import BaseCommand from django.utils.crypto import get_random_string class Command(BaseCommand): help = 'Create random users' def add_arguments(self, parser): parser.add_argument('total', type=int, help='Количество создаваемых пользователей') parser.add_argument('-p', '--prefix', type=str, help='Префикс для username') parser.add_argument('-a', '--admin', action='store_true', help='Создание учетной записи администратора') def handle(self, *args, **kwargs): total = kwargs['total'] prefix = kwargs['prefix'] admin = kwargs['admin'] for i in range(total): if prefix: username = '_'.format(prefix=prefix, random_string=get_random_string()) else: username = get_random_string() if admin: User.objects.create_superuser(username=username, email='', password='123') else: User.objects.create_user(username=username, email='', password='123')
python manage.py create_users 2 --admin
python manage.py create_users 2 -a

Произвольный список аргументов

Давайте создадим новую команду delete_users . В ней мы передадим список идентификаторов пользователей, которых команда должна удалить из базы данных.

management/commands/delete_users.py

from django.contrib.auth.models import User from django.core.management.base import BaseCommand class Command(BaseCommand): help = 'Delete users' def add_arguments(self, parser): parser.add_argument('user_id', nargs='+', type=int, help='User ID') def handle(self, *args, **kwargs): users_ids = kwargs['user_id'] for user_id in users_ids: try: user = User.objects.get(pk=user_id) user.delete() self.stdout.write(u'Пользователь"%s (%s)" удален успешно!' % (user.username, user_id)) except User.DoesNotExist: self.stdout.write(u'Пользователь с id "%s" не существует.' % user_id)
python manage.py delete_users 1
Пользователь "SMl5ISqAsIS8 (1)" удален успешно!

Также мы можем передать список id , разделенных пробелом, таким образом команда удалит пользователей за один вызов:

python manage.py delete_users 1 2 3 4
Пользователь с id "1" не существует. Пользователь "9teHR4Y7Bz4q (2)" удален успешно! Пользователь "ABdSgmBtfO2t (3)" удален успешно! Пользователь "BsDxOO8Uxgvo (4)" удален успешно!

Стилизация

Можно улучшить предыдущий пример, добавив цвета для вывода сообщений:

management/commands/delete_users.py

from django.contrib.auth.models import User from django.core.management.base import BaseCommand class Command(BaseCommand): help = 'Delete users' def add_arguments(self, parser): parser.add_argument('user_id', nargs='+', type=int, help='User ID') def handle(self, *args, **kwargs): users_ids = kwargs['user_id'] for user_id in users_ids: try: user = User.objects.get(pk=user_id) user.delete() self.stdout.write(self.style.SUCCESS(u'Пользователь "%s (%s)" удален успешно!' % (user.username, user_id))) except User.DoesNotExist: self.stdout.write(self.style.WARNING(u'Пользователь с id "%s" не существует.' % user_id))
python manage.py delete_users 3 4 5 6

Ниже предоставлен список всех доступных стилей в виде пользовательской команды:

from django.core.management.base import BaseCommand class Command(BaseCommand): help = 'Show all available styles' def handle(self, *args, **kwargs): self.stdout.write(self.style.ERROR('error - A major error.')) self.stdout.write(self.style.NOTICE('notice - A minor error.')) self.stdout.write(self.style.SUCCESS('success - A success.')) self.stdout.write(self.style.WARNING('warning - A warning.')) self.stdout.write(self.style.SQL_FIELD('sql_field - The name of a model field in SQL.')) self.stdout.write(self.style.SQL_COLTYPE('sql_coltype - The type of a model field in SQL.')) self.stdout.write(self.style.SQL_KEYWORD('sql_keyword - An SQL keyword.')) self.stdout.write(self.style.SQL_TABLE('sql_table - The name of a model in SQL.')) self.stdout.write(self.style.HTTP_INFO('http_info - A 1XX HTTP Informational server response.')) self.stdout.write(self.style.HTTP_SUCCESS('http_success - A 2XX HTTP Success server response.')) self.stdout.write(self.style.HTTP_NOT_MODIFIED('http_not_modified - A 304 HTTP Not Modified server response.')) self.stdout.write(self.style.HTTP_REDIRECT('http_redirect - A 3XX HTTP Redirect server response other than 304.')) self.stdout.write(self.style.HTTP_NOT_FOUND('http_not_found - A 404 HTTP Not Found server response.')) self.stdout.write(self.style.HTTP_BAD_REQUEST('http_bad_request - A 4XX HTTP Bad Request server response other than 404.')) self.stdout.write(self.style.HTTP_SERVER_ERROR('http_server_error - A 5XX HTTP Server Error response.')) self.stdout.write(self.style.MIGRATE_HEADING('migrate_heading - A heading in a migrations management command.')) self.stdout.write(self.style.MIGRATE_LABEL('migrate_label - A migration name.'))

Задания для утилиты cron

Если у вас есть задачи, которые должны периодически выполняться, можно использовать свою команду и добавить ее в crontab:

# m h dom mon dow command 0 4 * * * /home/mysite/venv/bin/python /home/mysite/mysite/manage.py my_custom_command

Этот пример будет выполнять каждый день в 4 часа команду my_custom_command .

Основные команды для управления django проектом

Данная заметка по django используется как шпаргалка, в которой будут описаны основные команды для управления django проектом. Серверная ос Ubuntu.

создание нового проекта в текущей директории

 django-admin startproject nazvanie_proekta 

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

 python manage.py startapp nazvanie_prilozheniya 

Запуск сервера разработки

 python manage.py runserver 

порт браузера по умолчанию 8000

URL проекта - http://localhost:8000

Запуск интерактивного интерпретатора.

 python manage.py shell 

Проверка корректности синтаксиса и логики моделей

 python manage.py validate 

Генерация SQL операторов CREATE TABLE для моделей приложения

 python manage.py sqlall nazvanie_prilozheniya 

Команда sqlall только выводит результат на экран.

Синхронизация моделей Django с базой данных

 python manage.py syncdb 

syncdb только добавляет данные и проверяет корректность схемы, удаления не происходит

Что такое manage py

При установке Django в папке виртуальной среды устанавливается утилита django-admin . А на Windows также исполняемый файл django-admin.exe . Их можно найти в папке виртуальной среды, в которую производилась установка Django: на Windows - в подкаталоге Scripts , а на Linux/MacOS - в каталоге bin .

django-admin в Django и Python

django-admin предоставляет ряд команд для управления проектом Django. В частности, для создания проекта применяется команда startproject . Этой команде в качестве аргумента передается название проекта.

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

И после активации виртуальной среды выполним следующую команду

c:\django>django-admin startproject metanit

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

В данном случае мы создаем проект с именем "metanit". И после выполнения этой команды в текущей папке (c:\django) будет создан каталог metanit .

Первый проект на Python и Django

Созданный каталог будет состоять из следующих элементов:

  • manage.py : выполняет различные команды проекта, например, создает и запускает приложение
  • metanit - собственно папка проекта metanit, которая содержит следующие файлы:
    • __init__.py : данный файл указывает, что папка, в которой он находится, будет рассматриваться как модуль. Это стандартный файл для программы на языке Python.
    • settings.py : содержит настройки конфигурации проекта
    • urls.py : содержит шаблоны URL-адресов, по сути определяет систему маршрутизации проекта
    • wsgi.py : содержит свойства конфигурации WSGI (Web Server Gateway Inerface). Он используется при развертывании проекта.
    • asgi.py : название файла представляет сокращение от Asynchronous Server Gateway Interface и расширяет возможности WSGI, добавляя поддержку для взаимодействия между асинхронными веб-серверами и приложениями.

    Запустим проект на выполнение. Для этого с помощью команды cd перейдем в консоли к папке проекта. И затем для запуска проекта выполним следующую команду:

    python manage.py runserver

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *