Spec-Zone.ru › Django 5.2

django-admin и manage.py

django-admin — это утилита командной строки Django для административных задач. В этом документе описаны все ее возможности.

Кроме того, manage.py автоматически создается в каждом проекте Django. Он делает то же самое, что и django-admin, но также устанавливает переменную окружения DJANGO_SETTINGS_MODULE, чтобы она указывала на файл настроек settings.py вашего проекта.

Скрипт django-admin должен быть в вашей системной переменной PATH, если вы установили Django через pip. Если его нет в вашей переменной PATH, убедитесь, что ваш виртуальный окружение активировано.

В целом, при работе с одним проектом Django удобнее использовать manage.py, чем django-admin. Если вам нужно переключаться между несколькими файлами настроек Django, используйте django-admin с DJANGO_SETTINGS_MODULE или опцией командной строки --settings.

В примерах командной строки в этом документе используется django-admin для единообразия, но любой пример может использовать manage.py или python -m django также.

Использование

$ django-admin <command> [options]
$ manage.py <command> [options]
$ python -m django <command> [options]
...\> django-admin <command> [options]
...\> manage.py <command> [options]
...\> py -m django <command> [options]

command должно быть одной из команд, перечисленных в этом документе. options, которое является необязательным, должно быть нулем или более опций, доступных для данной команды.

Получение справки во время выполнения

django-admin help

Запустите django-admin help, чтобы отобразить информацию об использовании и список команд, предоставляемых каждым приложением.

Запустите django-admin help --commands, чтобы отобразить список всех доступных команд.

Запустите django-admin help <command>, чтобы отобразить описание данной команды и список доступных опций.

Имена приложений

Многие команды принимают список «имен приложений». «Имя приложения» — это имя пакета, содержащего ваши модели. Например, если ваш INSTALLED_APPS содержит строку 'mysite.blog', имя приложения — blog.

Определение версии

django-admin version

Запустите django-admin version, чтобы отобразить текущую версию Django.

Вывод соответствует схеме, описанной в PEP 440:

1.4.dev17026
1.4a1
1.4

Отображение отладочного вывода

Используйте --verbosity, где это поддерживается, для указания количества уведомлений и отладочной информации, которые django-admin выводит в консоль.

Доступные команды

check

django-admin check [app_label [app_label ...]]

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

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

django-admin check auth admin myapp
--tag TAGS, -t TAGS

Фреймворк системы проверки выполняет множество различных проверок, которые категоризированы по меткам. Вы можете использовать эти метки для ограничения выполняемых проверок только определённой категорией. Например, для выполнения только проверок моделей и совместимости выполните:

django-admin check --tag models --tag compatibility
--database DATABASE

Указывает базу данных для выполнения проверок, требующих доступа к базе данных:

django-admin check --database default --database other

По умолчанию эти проверки не выполняются.

--list-tags

Выводит список всех доступных меток.

--deploy

Включает дополнительные проверки, относящиеся только к настройкам развертывания.

Вы можете использовать этот параметр в локальной среде разработки, но поскольку ваш локальный модуль настроек может не содержать многих настроек производства, вам, вероятно, потребуется указать команду check на другой модуль настроек, либо установив переменную среды DJANGO_SETTINGS_MODULE, либо передав параметр --settings:

django-admin check --deploy --settings=production_settings

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

--fail-level {CRITICAL,ERROR,WARNING,INFO,DEBUG}

Указывает уровень сообщения, который заставит команду завершиться с ненулевым статусом. По умолчанию ERROR.

compilemessages

django-admin compilemessages

Компилирует файлы .po, созданные командой makemessages, в файлы .mo для использования с встроенной поддержкой gettext. См. Международные настройки и локализация.

--locale LOCALE, -l LOCALE

Указывает локаль(и), которую нужно обработать. Если не указано, обрабатываются все локали.

--exclude EXCLUDE, -x EXCLUDE

Указывает локаль(и), которые нужно исключить из обработки. Если не указано, никакие локали не исключаются.

--use-fuzzy, -f

Включает нечёткое переводы в скомпилированные файлы.

Пример использования:

django-admin compilemessages --locale=pt_BR
django-admin compilemessages --locale=pt_BR --locale=fr -f
django-admin compilemessages -l pt_BR
django-admin compilemessages -l pt_BR -l fr --use-fuzzy
django-admin compilemessages --exclude=pt_BR
django-admin compilemessages --exclude=pt_BR --exclude=fr
django-admin compilemessages -x pt_BR
django-admin compilemessages -x pt_BR -x fr
--ignore PATTERN, -i PATTERN

Игнорирует директории, соответствующие заданному шаблону в стиле glob. Используйте несколько раз для игнорирования большего количества директорий.

Пример использования:

django-admin compilemessages --ignore=cache --ignore=outdated/*/locale

createcachetable

django-admin createcachetable

Создаёт таблицы кэша для использования с кэшем базы данных на основе информации из вашего файла настроек. Подробнее см. в фреймворке кэширования Django.

--database DATABASE

Указывает базу данных, в которой будут созданы таблицы кэша. По умолчанию default.

--dry-run

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

dbshell

django-admin dbshell

Запускает командную строку клиента для движка базы данных, указанного в настройке ENGINE, с параметрами подключения, указанными в настройках USER, PASSWORD и т. д.

  • Для PostgreSQL это запускает клиент командной строки psql.
  • Для MySQL это запускает клиент командной строки mysql.
  • Для SQLite это запускает клиент командной строки sqlite3.
  • Для Oracle это запускает клиент командной строки sqlplus.

Эта команда предполагает, что программы находятся на вашем PATH, так что обращение к имени программы (psql, mysql, sqlite3, sqlplus) найдёт программу в нужном месте. Указать расположение программы вручную невозможно.

--database DATABASE

Указывает базу данных, для которой откроется оболочка. По умолчанию default.

-- ARGUMENTS

Любые аргументы, следующие после разделителя --, будут переданы в подлежащий клиент командной строки. Например, с PostgreSQL вы можете использовать флаг psql команды -c для непосредственного выполнения запроса SQL:

$ django-admin dbshell -- -c 'select current_user'
 current_user
--------------
 postgres
(1 row)
...\> django-admin dbshell -- -c 'select current_user'
 current_user
--------------
 postgres
(1 row)

В MySQL/MariaDB вы можете сделать это с флагом mysql команды -e:

$ django-admin dbshell -- -e "select user()"
+----------------------+
| user()               |
+----------------------+
| djangonaut@localhost |
+----------------------+
...\> django-admin dbshell -- -e "select user()"
+----------------------+
| user()               |
+----------------------+
| djangonaut@localhost |
+----------------------+

Примечание

Обратите внимание, что не все параметры, установленные в части OPTIONS вашей конфигурации базы данных в DATABASES, передаются клиенту командной строки, например, 'isolation_level'.

diffsettings

django-admin diffsettings

Отображает различия между текущим файлом настроек и стандартными настройками Django (или другим файлом настроек, указанным в --default).

Настройки, отсутствующие в стандартных, следуют за "###". Например, в стандартных настройках не определён ROOT_URLCONF, поэтому ROOT_URLCONF следует за "###" в выводе команды diffsettings.

--all

Отображает все настройки, даже если они имеют стандартное значение Django. Такие настройки предваряются "###".

--default MODULE

Модуль настроек для сравнения с текущими настройками. Оставьте пустым, чтобы сравнить с настройками по умолчанию Django.

--output {hash,unified}

Указывает формат вывода. Доступные значения — hash и unified. hash — это режим по умолчанию, который отображает вывод, описанный выше. unified отображает вывод, аналогичный выводу команды diff -u. Настройки по умолчанию предваряются знаком минус, а изменённые настройки — знаком плюс.

dumpdata

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]

Выводит в стандартный вывод все данные в базе данных, связанные с указанными приложением(ями).

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

Результат dumpdata может быть использован в качестве входных данных для loaddata.

Когда результат dumpdata сохранен в файл, он может служить фиксатором для тестов или в качестве начальных данных.

Обратите внимание, что dumpdata использует менеджер по умолчанию для модели для выбора записей для выгрузки. Если вы используете пользовательский менеджер в качестве менеджера по умолчанию и он фильтрует некоторые доступные записи, не все объекты будут выгружены.

--all, -a

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

--format FORMAT

Указывает формат сериализации вывода. По умолчанию JSON. Поддерживаемые форматы перечислены в форматах сериализации.

--indent INDENT

Указывает количество отступов, используемых в выводе. По умолчанию None, что отображает все данные в одной строке.

--exclude EXCLUDE, -e EXCLUDE

Препятствует выгрузке определенных приложений или моделей (указанных в форме app_label.ModelName). Если вы указываете имя модели, то будет исключена только эта модель, а не все приложение. Вы также можете смешивать имена приложений и модели.

Если вам нужно исключить несколько приложений, передайте --exclude более одного раза:

django-admin dumpdata --exclude=auth --exclude=contenttypes
--database DATABASE

Указывает базу данных, из которой будут выгружены данные. По умолчанию default.

--natural-foreign

Использует метод модели natural_key() для сериализации любых внешних ключей и многих-ко-многим отношений к объектам типа, который определяет метод. Если вы выгружаете contrib.auth Permission объектов или contrib.contenttypes ContentType объектов, вам, вероятно, следует использовать этот флаг. Подробности об этом и следующем параметре см. в документации по естественным ключам.

--natural-primary

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

--pks PRIMARY_KEYS

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

--output OUTPUT, -o OUTPUT

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

Когда этот параметр установлен и --verbosity больше 0 (по умолчанию), в терминале отображается полоса прогресса.

Сжатие фикстур

Выходной файл можно сжать с помощью одного из форматов bz2, gz, lzma или xz, добавив соответствующее расширение к имени файла. Например, чтобы вывести данные в сжатый JSON-файл:

django-admin dumpdata -o mydata.json.gz

flush

django-admin flush

Удаляет все данные из базы данных и повторно выполняет все обработчики пост-синхронизации. Таблица примененных миграций не очищается.

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

--noinput, --no-input

Отключает все запросы пользователю.

--database DATABASE

Указывает базу данных для очищения. По умолчанию default.

inspectdb

django-admin inspectdb [table [table ...]]

Просматривает таблицы базы данных, указанные в настройке NAME, и выводит модуль Django модели (файл models.py) в стандартный вывод.

Можно выбрать таблицы или представления для проверки, передав их имена в качестве аргументов. Если аргументы не указаны, модели создаются только для представлений, если используется параметр --include-views. Модели для таблиц-разделов создаются в PostgreSQL, если используется параметр --include-partitions.

Используйте этот инструмент, если у вас есть базовая база данных, с которой вы хотите использовать Django. Скрипт проанализирует базу данных и создаст модель для каждой таблицы в ней.

Как и ожидалось, созданные модели будут иметь атрибут для каждого поля в таблице. Обратите внимание, что inspectdb имеет несколько особых случаев в выводе имени поля:

  • Если inspectdb не может сопоставить тип столбца с типом поля модели, он будет использовать TextField и вставит Python-комментарий 'This field type is a guess.' рядом с полем в сгенерированной модели. Распознаваемые поля могут зависеть от приложений, указанных в INSTALLED_APPS. Например, django.contrib.postgres добавляет распознавание нескольких типов полей PostgreSQL.
  • Если имя столбца базы данных является зарезервированным словом Python (например, 'pass', 'class' или 'for'), inspectdb добавит '_field' к имени атрибута. Например, если таблица имеет столбец 'for', сгенерированная модель будет иметь поле 'for_field' с атрибутом db_column, установленным в 'for'. inspectdb вставит Python-комментарий 'Field renamed because it was a Python reserved word.' рядом с полем.

Эта функция предназначена в качестве быстрого решения, а не для окончательного генерации моделей. После выполнения вам следует самостоятельно изучить сгенерированные модели, чтобы внести необходимые изменения. В частности, вам нужно будет переставить порядок моделей, чтобы модели, ссылающиеся на другие модели, были упорядочены должным образом.

Django не создает значения по умолчанию в базе данных, когда задано default в поле модели. Аналогично, значения по умолчанию в базе данных не переводятся в значения по умолчанию в поле модели или каким-либо образом обнаруживаются inspectdb.

По умолчанию, inspectdb создаёт не управляемые модели. То есть, managed = False в классе Meta модели говорит Django, что не нужно управлять созданием, изменением и удалением каждой таблицы. Если вы хотите, чтобы Django управлял жизненным циклом таблицы, вам нужно изменить параметр managed на True (или удалить его, так как True — его значение по умолчанию).

Примечания к определённым базам данных

Oracle
  • Модели создаются для материализованных представлений, если используется --include-views.
PostgreSQL
  • Модели создаются для внешних таблиц.
  • Модели создаются для материализованных представлений, если используется --include-views.
  • Модели создаются для таблиц-разделов, если используется --include-partitions.
--database DATABASE

Указывает базу данных для анализа. По умолчанию default.

--include-partitions

Если этот параметр указан, модели также создаются для разделов.

Реализация поддержки только PostgreSQL.

--include-views

Если этот параметр указан, модели также создаются для представлений базы данных.

loaddata

django-admin loaddata fixture [fixture ...]

Ищет и загружает содержимое указанного файла конфигурации в базу данных.

--database DATABASE

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

--ignorenonexistent, -i

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

--app APP_LABEL

Указывает отдельное приложение для поиска файлов конфигурации вместо всех приложений.

--format FORMAT

Указывает формат сериализации (например, json или xml) для файлов конфигурации, считанных из стандартного ввода.

--exclude EXCLUDE, -e EXCLUDE

Исключает загрузку файлов конфигурации из указанных приложений и/или моделей (в формате app_label или app_label.ModelName). Используйте этот параметр несколько раз для исключения нескольких приложений или моделей.

Загрузка файлов конфигурации из stdin

Вы можете использовать дефис в качестве имени файла конфигурации для загрузки данных из sys.stdin. Например:

django-admin loaddata --format=json -

При чтении из stdin, параметр --format необходим для указания формата сериализации входных данных (например, json или xml).

Загрузка из stdin полезна при перенаправлении стандартного ввода и вывода. Например:

django-admin dumpdata --format=json --database=test app_label.ModelName | django-admin loaddata --format=json --database=prod -

Команда dumpdata может быть использована для генерации входных данных для loaddata.

См. также

Для получения более подробной информации о файлах конфигурации см. раздел Файлы конфигурации.

makemessages

django-admin makemessages

Обрабатывает всю древовидную структуру источников текущей директории и извлекает все строки, помеченные для перевода. Она создает (или обновляет) файл сообщений в директории conf/locale (в дереве Django) или locale (для проекта и приложения). После внесения изменений в файлы сообщений необходимо скомпилировать их с помощью compilemessages для использования с встроенной поддержкой gettext. Подробности см. в документации по i18n.

Эта команда не требует настроек. Однако, если настройки не заданы, команда не может игнорировать директории MEDIA_ROOT и STATIC_ROOT или включать LOCALE_PATHS.

--all, -a

Обновляет файлы сообщений для всех доступных языков.

--extension EXTENSIONS, -e EXTENSIONS

Указывает список расширений файлов для проверки (по умолчанию: html, txt, py или js, если --domain равен djangojs).

Пример использования:

django-admin makemessages --locale=de --extension xhtml

Разделяйте несколько расширений запятыми или используйте -e или --extension несколько раз:

django-admin makemessages --locale=de --extension=html,txt --extension xml
--locale LOCALE, -l LOCALE

Указывает локаль(и) для обработки.

--exclude EXCLUDE, -x EXCLUDE

Указывает локаль(и) для исключения из обработки. Если не указано, никакие локали не исключаются.

Пример использования:

django-admin makemessages --locale=pt_BR
django-admin makemessages --locale=pt_BR --locale=fr
django-admin makemessages -l pt_BR
django-admin makemessages -l pt_BR -l fr
django-admin makemessages --exclude=pt_BR
django-admin makemessages --exclude=pt_BR --exclude=fr
django-admin makemessages -x pt_BR
django-admin makemessages -x pt_BR -x fr
--domain DOMAIN, -d DOMAIN

Указывает домен файлов сообщений. Поддерживаемые варианты:

  • django для всех *.py, *.html и *.txt файлов (по умолчанию)
  • djangojs для *.js файлов
--symlinks, -s

Следует за символическими ссылками на директории при поиске новых строк перевода.

Пример использования:

django-admin makemessages --locale=de --symlinks
--ignore PATTERN, -i PATTERN

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

Эти шаблоны используются по умолчанию: 'CVS', '.*', '*~', '*.pyc'.

Пример использования:

django-admin makemessages --locale=en_US --ignore=apps/* --ignore=secret/*.html
--no-default-ignore

Отключает значения по умолчанию --ignore.

--no-wrap

Отключает разделение длинных строк сообщений на несколько строк в файлах языка.

--no-location

Запрещает запись комментариев ‘#: filename:line’ в файлы языка. Использование этого параметра затрудняет понимание контекста каждого сообщения технически подкованными переводчиками.

--add-location [{full,file,never}]

Управление #: filename:line строками комментариев в файлах языка. Если параметр:

  • full (по умолчанию, если не указано): строки включают имя файла и номер строки.
  • file: номер строки опускается.
  • never: строки подавляются (то же самое, что и --no-location).

Требуется gettext 0.19 или новее.

--no-obsolete

Удаляет устаревшие строки сообщений из файлов .po.

--keep-pot

Предотвращает удаление временных файлов .pot, созданных перед созданием файла .po. Это полезно для отладки ошибок, которые могут помешать созданию окончательных файлов языка.

См. также

См. Настройка команды makemessages для инструкций по настройке ключевых слов, которые makemessages передает xgettext.

makemigrations

django-admin makemigrations [app_label [app_label ...]]

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

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

Для добавления миграций в приложение, у которого нет директории migrations, запустите makemigrations с app_label приложения.

--noinput, --no-input

Отключает все запросы пользователю. Если подавленный запрос нельзя разрешить автоматически, команда завершится с ошибкой 3.

--empty

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

--dry-run

Показывает, какие миграции будут выполнены, не записывая фактически какие-либо файлы миграций на диск. Использование этого параметра вместе с --verbosity 3 также отобразит полные файлы миграций, которые будут записаны.

--merge

Включает исправление конфликтов миграций.

--name NAME, -n NAME

Позволяет задать имя сгенерированной(ых) миграции(ий) вместо использования сгенерированного имени. Имя должно быть допустимым идентификатором Python идентификатора.

--no-header

Генерирует файлы миграций без версии Django и временной метки в заголовке.

--check

Заставляет makemigrations завершиться с ненулевым статусом, когда обнаружены изменения моделей без миграций. Подразумевает --dry-run.

--scriptable

Перенаправляет вывод логов и запросы ввода в stderr, записывая только пути сгенерированных файлов миграций в stdout.

--update

Объединяет изменения в модели в последнюю миграцию и оптимизирует полученные операции.

Обновлённая миграция будет иметь сгенерированное имя. Для сохранения предыдущего имени установите его с помощью --name.

migrate

django-admin migrate [app_label] [migration_name]

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

Поведение этой команды меняется в зависимости от предоставленных аргументов:

  • Без аргументов: выполняются все миграции всех приложений.
  • <app_label>: выполняются миграции указанного приложения до последней миграции. Это может также потребовать выполнения миграций других приложений из-за зависимостей.
  • <app_label> <migrationname>: приводит схему базы данных в состояние, где применена указанная миграция, но не применяются более поздние миграции в том же приложении. Это может потребовать отмены миграций, если вы ранее мигрировали за указанной миграцией. Вы можете использовать префикс имени миграции, например, 0001, при условии, что он уникален для данного имени приложения. Используйте имя zero, чтобы мигрировать полностью назад, т.е. отменить все применённые миграции для приложения.

Предупреждение

При отмене миграций все зависимые миграции также будут отменены, независимо от <app_label>. Вы можете использовать --plan, чтобы проверить, какие миграции будут отменены.

--database DATABASE

Указывает базу данных для миграции. По умолчанию default.

--fake

Помечает миграции до целевой (следуя правилам выше) как применённые, но без фактического выполнения SQL для изменения схемы вашей базы данных.

Это предназначено для опытных пользователей для непосредственного управления текущим состоянием миграции, если они вручную применяют изменения; будьте предупреждены, что использование --fake несёт риск размещения таблицы состояния миграции в состоянии, при котором ручное восстановление потребуется для корректного выполнения миграций.

--fake-initial

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

--plan

Показывает операции миграции, которые будут выполнены для данной команды migrate.

--run-syncdb

Позволяет создавать таблицы для приложений без миграций. Хотя это не рекомендуется, в больших проектах сотнями моделей фреймворк миграций иногда работает слишком медленно.

--noinput, --no-input

Отключает все запросы пользователю. Пример запроса — вопрос об удалении устаревшего контента.

--check

Заставляет migrate завершиться с ненулевым статусом при обнаружении невыполненных миграций.

--prune

Удаляет несуществующие миграции из таблицы django_migrations. Это полезно, когда файлы миграций, заменённые сжатой миграцией, были удалены. Подробнее см. Сжатие миграций.

optimizemigration

django-admin optimizemigration app_label migration_name

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

--check

Заставляет optimizemigration завершиться с ненулевым статусом, когда миграцию можно оптимизировать.

runserver

django-admin runserver [addrport]

Запускает лёгкий веб-сервер разработки на локальной машине. По умолчанию сервер работает на порту 8000 на IP-адресе 127.0.0.1. Вы можете явно указать IP-адрес и номер порта.

Если вы запускаете этот скрипт от пользователя с обычными привилегиями (рекомендуется), у вас может не быть доступа к запуску порта на низком номере порта. Низкие номера портов зарезервированы для суперпользователя (root).

Этот сервер использует объект WSGI-приложения, указанный в настройке WSGI_APPLICATION.

Предупреждение

НЕ ИСПОЛЬЗУЙТЕ ЭТОТ СЕРВЕР В ПРОИЗВОДСТВЕННОЙ СРЕДЕ.

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

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

Если вы используете Linux или MacOS и установили как pywatchman, так и службу Watchman, для автоматической перезагрузки сервера будут использоваться сигналы ядра (вместо опроса временных меток изменения файлов каждую секунду). Это обеспечивает лучшую производительность крупных проектов, сокращает время отклика после изменений кода, обеспечивает более надёжное обнаружение изменений и снижает энергопотребление. Django поддерживает pywatchman 1.2.0 и выше.

Крупные каталоги с множеством файлов могут вызвать проблемы с производительностью

При использовании Watchman с проектом, включающим большие каталоги, не относящиеся к Python, такие как node_modules, для достижения оптимальной производительности рекомендуется проигнорировать этот каталог. Смотрите документацию watchman для получения информации о том, как это сделать.

Таймаут Watchman

DJANGO_WATCHMAN_TIMEOUT

Значение по умолчанию для таймаута клиента Watchman составляет 5 секунд. Вы можете изменить его, установив переменную среды DJANGO_WATCHMAN_TIMEOUT.

При запуске сервера и каждом изменении кода Python во время работы сервера, система проверок будет проверять весь проект Django на наличие распространённых ошибок (см. команду check). Если будут обнаружены ошибки, они будут выведены в стандартный вывод. Вы можете использовать параметр --skip-checks, чтобы пропустить выполнение проверок системы.

Вы можете запускать несколько одновременных серверов, пока они работают на отдельных портах, выполнив django-admin runserver более одного раза.

Обратите внимание, что по умолчанию IP-адрес 127.0.0.1 недоступен для других машин в вашей сети. Чтобы сделать сервер разработки видимым для других машин в сети, используйте собственный IP-адрес (например, 192.168.2.1), 0 (сокращённая запись для 0.0.0.0), 0.0.0.0 или :: (с включённым IPv6).

Вы можете указать IPv6-адрес, заключённый в скобки (например, [200a::1]:8000). Это автоматически включит поддержку IPv6.

Также можно использовать имя хоста, содержащее только символы ASCII.

Если приложение staticfiles включено (по умолчанию в новых проектах), команда runserver будет переопределена собственной командой runserver.

Логирование каждого запроса и ответа сервера отправляется в логгер django.server.

--noreload

Отключает автоперезагрузчик. Это означает, что любые изменения кода Python, которые вы делаете во время работы сервера, не вступят в силу, если соответствующие модули Python уже загружены в память.

--nothreading

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

--ipv6, -6

Использует IPv6 для сервера разработки. Это изменяет адрес по умолчанию с 127.0.0.1 на ::1.

HIDE_PRODUCTION_WARNING
Добавлено в Django 5.2.

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

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/|version|/howto/deployment/

Установите эту переменную среды в значение "true", чтобы скрыть это предупреждение.

Примеры использования различных портов и адресов

Порт 8000 на IP-адресе 127.0.0.1:

django-admin runserver

Порт 8000 на IP-адресе 1.2.3.4:

django-admin runserver 1.2.3.4:8000

Порт 7000 на IP-адресе 127.0.0.1:

django-admin runserver 7000

Порт 7000 на IP-адресе 1.2.3.4:

django-admin runserver 1.2.3.4:7000

Порт 8000 на IPv6-адресе ::1:

django-admin runserver -6

Порт 7000 на IPv6-адресе ::1:

django-admin runserver -6 7000

Порт 7000 на IPv6-адресе 2001:0db8:1234:5678::9:

django-admin runserver [2001:0db8:1234:5678::9]:7000

Порт 8000 на IPv4-адресе хоста localhost:

django-admin runserver localhost:8000

Порт 8000 на IPv6-адресе хоста localhost:

django-admin runserver -6 localhost:8000

Обработка статических файлов с сервером разработки

По умолчанию сервер разработки не предоставляет какие-либо статические файлы для вашего сайта (такие как CSS-файлы, изображения, элементы под MEDIA_URL и т. д.). Если вы хотите настроить Django на предоставление статических медиа-данных, прочитайте Как управлять статическими файлами (например, изображениями, JavaScript, CSS).

Обработка с ASGI при разработке

Команда Django’s runserver предоставляет WSGI-сервер. Для работы под ASGI вам потребуется использовать ASGI-сервер. Проект Django Daphne предоставляет Интеграцию с runserver, которую вы можете использовать.

sendtestemail

django-admin sendtestemail [email [email ...]]

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

Например:

django-admin sendtestemail foo@example.com bar@example.com

Есть несколько вариантов, и вы можете использовать любую комбинацию из них:

--managers

Отправляет письмо на электронные адреса, указанные в MANAGERS, используя mail_managers().

--admins

Отправляет письмо на электронные адреса, указанные в ADMINS, используя mail_admins().

shell

django-admin shell

Запускает интерактивный интерпретатор Python.

Все модели из установленных приложений автоматически импортируются в среду оболочки. Модели из приложений, перечисленных ранее в INSTALLED_APPS, имеют приоритет. Для версии --verbosity 2 или выше автоматически импортированные объекты будут перечислены. Чтобы полностью отключить автоматический импорт, используйте флаг --no-imports.

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

Изменено в Django 5.2:

Добавлен автоматический импорт моделей.

--interface {ipython,bpython,python}, -i {ipython,bpython,python}

Указывает оболочку для использования. По умолчанию Django будет использовать IPython или bpython, если они установлены. Если оба установлены, укажите, какой вы хотите:

IPython:

django-admin shell -i ipython

bpython:

django-admin shell -i bpython

Если у вас установлена «оболочка» богатой функциональности, но вы хотите принудительно использовать обычный интерпретатор Python, используйте python в качестве имени интерфейса, например:

django-admin shell -i python
--no-startup

Отключает чтение скрипта запуска для обычного интерпретатора Python. По умолчанию читается скрипт, указанный в переменной среды PYTHONSTARTUP или скрипт ~/.pythonrc.py.

--no-imports
Новое в Django 5.2.

Отключает автоматический импорт моделей из INSTALLED_APPS.

--command COMMAND, -c COMMAND

Позволяет передать команду в виде строки, чтобы выполнить её как Django, например:

django-admin shell --command="import django; print(django.__version__)"

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

$ django-admin shell <<EOF
> import django
> print(django.__version__)
> EOF

В Windows REPL выводится из-за ограничений реализации select.select() на этой платформе.

showmigrations

django-admin showmigrations [app_label [app_label ...]]

Отображает все миграции в проекте. Вы можете выбрать один из двух форматов:

--list, -l

Выводит список всех известных Django приложений, доступных миграций для каждого приложения и применённых миграций (помечается [X] рядом с именем миграции). Для версии --verbosity 2 и выше также отображаются даты и время применения.

Приложения без миграций также отображаются, но под ними отображается (no migrations).

Это формат вывода по умолчанию.

--plan, -p

Отображает план миграций, которому Django будет следовать для применения миграций. Как и --list, применённые миграции отмечаются [X]. Для версии --verbosity 2 и выше также будут показаны все зависимости миграции.

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

--database DATABASE

Указывает базу данных для проверки. По умолчанию default.

sqlflush

django-admin sqlflush

Выводит SQL-запросы, которые будут выполнены для команды flush.

--database DATABASE

Указывает базу данных, для которой следует вывести SQL. По умолчанию default.

sqlmigrate

django-admin sqlmigrate app_label migration_name

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

Обратите внимание, что sqlmigrate не форматирует свой вывод цветом.

--backwards

Генерирует SQL для отмены миграции. По умолчанию создаваемый SQL предназначен для выполнения миграции в прямом направлении.

--database DATABASE

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

sqlsequencereset

django-admin sqlsequencereset app_label [app_label ...]

Выводит SQL-запросы для сброса последовательностей для заданного(ых) имени(ён) приложения(ий).

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

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

--database DATABASE

Указывает базу данных, для которой следует вывести SQL. По умолчанию default.

squashmigrations

django-admin squashmigrations app_label [start_migration_name] migration_name

Сжимает миграции для app_label до и включая migration_name вниз в меньшее количество миграций, если это возможно. Результирующие сжатые миграции могут безопасно существовать наряду с несжатыми. Для получения дополнительной информации, пожалуйста, прочитайте Сжатие миграций.

Когда start_migration_name указано, Django включит только миграции, начиная с и включая эту миграцию. Это помогает смягчить ограничение сжатия для RunPython и django.db.migrations.operations.RunSQL операций миграции.

--no-optimize

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

--noinput, --no-input

Отключает все запросы пользователю.

--squashed-name SQUASHED_NAME

Устанавливает имя сжатой миграции. При отсутствии имя основано на первой и последней миграции, с _squashed_ между ними.

--no-header

Генерирует файл сжатой миграции без заголовка версии Django и отметки времени.

startapp

django-admin startapp name [directory]

Создаёт структуру каталога приложения Django для заданного имени приложения в текущем каталоге или в указанном месте назначения.

По умолчанию, новый каталог содержит файл models.py и другие файлы шаблонов приложения. Если указано только имя приложения, каталог приложения будет создан в текущем рабочем каталоге.

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

Например:

django-admin startapp myapp /Users/jezdez/Code/myapp
--template TEMPLATE

Указывает путь к каталогу с файлом пользовательского шаблона приложения, или путь к нераспакованному архиву (.tar) или сжатому архиву (.tar.gz, .tar.bz2, .tar.xz, .tar.lzma, .tgz, .tbz2, .txz, .tlz, .zip) содержащему файлы шаблонов приложения.

Например, это позволит найти шаблон приложения в данном каталоге при создании приложения myapp:

django-admin startapp --template=/Users/jezdez/Code/my_app_template myapp

Django также будет принимать URL-адреса (http, https, ftp) к сжатым архивам с файлами шаблонов приложения, загружая и извлекая их на лету.

Например, используя возможность GitHub по показу репозиториев как zip-файлов, вы можете использовать URL-адрес:

django-admin startapp --template=https://github.com/githubuser/django-app-template/archive/main.zip myapp
--extension EXTENSIONS, -e EXTENSIONS

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

--name FILES, -n FILES

Указывает файлы в шаблоне приложения (в дополнение к тем, которые соответствуют --extension), которые должны обрабатываться движком шаблонов. По умолчанию пустой список.

--exclude DIRECTORIES, -x DIRECTORIES

Указывает каталоги в шаблоне приложения, которые должны быть исключены, в дополнение к .git и __pycache__. Если этот параметр не указан, будут исключены каталоги с именем __pycache__ или начинающиеся с ..

Используемый template context для всех соответствующих файлов:

  • Любой параметр, переданный команде startapp (среди поддерживаемых параметров команды)
  • app_name – имя приложения, переданное команде
  • app_directory – полный путь к созданному приложению
  • camel_case_app_name – имя приложения в формате с заглавной буквы
  • docs_version – версия документации: 'dev' или '1.x'
  • django_version – версия Django, например, '2.0.3'

Предупреждение

При обработке файлов шаблонов приложения движком шаблонов Django (по умолчанию все файлы *.py), Django также заменит все свободные переменные шаблона. Например, если один из файлов Python содержит строку документации, объясняющую определённую функцию, связанную с обработкой шаблонов, это может привести к некорректному примеру.

Чтобы обойти эту проблему, вы можете использовать тег шаблона templatetag для «экранирования» различных частей синтаксиса шаблона.

Кроме того, чтобы разрешить файлы шаблонов Python, содержащие синтаксис языка шаблонов Django, а также предотвратить попытки систем упаковки выполнить байт-компиляцию недопустимых файлов *.py, файлы шаблонов, заканчивающиеся на .py-tpl, будут переименованы в .py.

Предупреждение

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

startproject

django-admin startproject name [directory]

Создаёт структуру каталога проекта Django для заданного имени проекта в текущем каталоге или в указанном месте назначения.

По умолчанию, новый каталог содержит manage.py и пакет проекта (содержащий файл settings.py и другие файлы).

Если указано только имя проекта, как каталог проекта, так и пакет проекта будут названы <projectname>, и каталог проекта будет создан в текущем рабочем каталоге.

Если указан необязательный пункт назначения, Django будет использовать этот существующий каталог как каталог проекта и создаст manage.py и пакет проекта внутри него. Используйте ‘.’ для обозначения текущего рабочего каталога.

Например:

django-admin startproject myproject /Users/jezdez/Code/myproject_repo
--template TEMPLATE

Указывает каталог, путь к файлу или URL-адрес пользовательского шаблона проекта. См. документацию startapp --template для примеров и использования.

--extension EXTENSIONS, -e EXTENSIONS

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

--name FILES, -n FILES

Указывает файлы в шаблоне проекта (в дополнение к тем, которые соответствуют --extension), которые должны обрабатываться движком шаблонов. По умолчанию пустой список.

--exclude DIRECTORIES, -x DIRECTORIES

Указывает каталоги в шаблоне проекта, которые должны быть исключены, в дополнение к .git и __pycache__. Если этот параметр не указан, будут исключены каталоги с именем __pycache__ или начинающиеся с ..

Используемый template context:

  • Любой параметр, переданный команде startproject (среди поддерживаемых параметров команды)
  • project_name – имя проекта, переданное команде
  • project_directory – полный путь к созданному проекту
  • secret_key – случайный ключ для настройки SECRET_KEY
  • docs_version – версия документации: 'dev' или '1.x'
  • django_version – версия Django, например, '2.0.3'

Также обратите внимание на предупреждение об обработке и предупреждение о доверенном коде, упомянутые для startapp.

test

django-admin test [test_label [test_label ...]]

Выполняет тесты всех установленных приложений. Дополнительную информацию см. в разделе Тестирование в Django.

--failfast

Останавливает выполнение тестов и сообщает об ошибке сразу после её возникновения.

--testrunner TESTRUNNER

Управляет классом исполнителя тестов, используемым для их запуска. Это значение переопределяет значение, заданное в настройке TEST_RUNNER.

--noinput, --no-input

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

Параметры исполнителя тестов

Команда test получает параметры от имени указанного --testrunner. Это параметры по умолчанию для исполнителя тестов: DiscoverRunner.

--keepdb

Сохраняет тестовую базу данных между запусками тестов. Это даёт преимущество пропуска операций создания и удаления, что значительно сокращает время выполнения тестов, особенно при больших наборах тестов. Если тестовая база данных не существует, она будет создана при первом запуске и затем сохранена для каждого последующего. Если настройка теста MIGRATE имеет значение False, любые не применённые миграции также будут применены к тестовой базе данных перед запуском набора тестов.

--shuffle [SEED]

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

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

--reverse, -r

Сортирует тестовые кейсы в обратном порядке выполнения. Это может помочь в отладке побочных эффектов тестов, которые не изолированы должным образом. Группировка по классам тестов сохраняется при использовании этого параметра. Это можно использовать совместно с --shuffle для изменения порядка для определённого семени.

--debug-mode

Устанавливает значение настройки DEBUG в True перед запуском тестов. Это может помочь в устранении неполадок при тестировании.

--debug-sql, -d

Включает логирование SQL для неудачных тестов. Если --verbosity равно 2, запросы успешных тестов также будут выведены.

--parallel [N]
DJANGO_TEST_PROCESSES

Выполняет тесты в отдельных параллельных процессах. Поскольку современные процессоры имеют несколько ядер, это позволяет значительно ускорить выполнение тестов.

Использование --parallel без значения или со значением auto запускает один процесс на ядро в соответствии с multiprocessing.cpu_count(). Вы можете переопределить это, передав желаемое количество процессов, например --parallel 4, или установив переменную окружения DJANGO_TEST_PROCESSES.

Django распределяет тестовые кейсы — подклассы unittest.TestCase — по подпроцессам. Если количество классов тестовых кейсов меньше, чем настроенное количество процессов, Django уменьшит количество процессов соответственно.

Каждый процесс получает собственную базу данных. Необходимо убедиться, что разные классы тестовых кейсов не обращаются к одним и тем же ресурсам. Например, классы тестовых кейсов, которые работают с файловой системой, должны создавать временную директорию для собственного использования.

Примечание

Если у вас есть классы тестов, которые не могут быть запущены параллельно, вы можете использовать SerializeMixin для их последовательного запуска. См. Принудительное последовательное выполнение классов тестов.

Для корректного отображения трассировок исключений требуется пакет стороннего разработчика tblib:

$ python -m pip install tblib

Эта функция недоступна в Windows. Она также не работает с бэкендом базы данных Oracle.

Если вы хотите использовать pdb для отладки тестов, необходимо отключить параллельное выполнение (--parallel=1). В противном случае вы увидите что-то вроде bdb.BdbQuit.

Предупреждение

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

Это известный недостаток. Он возникает из-за необходимости сериализации объектов для обмена между процессами. Для получения подробной информации см. Что может быть сериализовано и десериализовано?.

--tag TAGS

Запускает только тесты, отмеченные указанными тегами. Можно указывать несколько раз и комбинировать с test --exclude-tag.

Тесты, которые не загружаются, всегда считаются подходящими.

--exclude-tag EXCLUDE_TAGS

Исключает тесты, отмеченные указанными тегами. Можно указывать несколько раз и комбинировать с test --tag.

-k TEST_NAME_PATTERNS

Запускает тестовые методы и классы, соответствующие шаблонам имён тестов, аналогично unittest's -k option. Можно указывать несколько раз.

--pdb

Запускает отладчик pdb при каждой ошибке или неудаче теста. Если установлен, вместо него используется ipdb.

--buffer, -b

Отбрасывает вывод (stdout и stderr) для успешных тестов, аналогично unittest's --buffer option.

--no-faulthandler

Django автоматически вызывает faulthandler.enable() при запуске тестов, что позволяет выводить трассировку, если интерпретатор аварийно завершился. Передайте --no-faulthandler, чтобы отключить это поведение.

--timing

Выводит время, включая настройку базы данных и общее время выполнения.

--durations N

Показывает N самых медленных тестовых кейсов (N=0 для всех).

Python 3.12 и выше

Эта функция доступна только для Python 3.12 и выше.

testserver

django-admin testserver [fixture [fixture ...]]

Запускает сервер разработки Django (как в runserver) с данными из заданного(ых) файла(ов) фикстур.

Например, эта команда:

django-admin testserver mydata.json

…выполнит следующие шаги:

  1. Создаст тестовую базу данных, как описано в Тестовой базе данных.
  2. Заполнит тестовую базу данных данными из заданных фикстур. (Подробнее о фикстурах см. в документации по loaddata выше.)
  3. Запустит сервер разработки Django (как в runserver), направленный на эту только что созданную тестовую базу данных вместо вашей рабочей базы данных.

Это полезно в ряде случаев:

  • Когда вы пишете тесты того, как ваши представления взаимодействуют с определенными данными фикстур, вы можете использовать testserver для взаимодействия с представлениями в веб-браузере вручную.
  • Допустим, вы разрабатываете свое приложение Django и имеете «чистый» резервный экземпляр базы данных, с которым вы хотите взаимодействовать. Вы можете экспортировать свою базу данных в файл фикстур (используя команду dumpdata, описанную выше), а затем использовать testserver для запуска вашего веб-приложения с этими данными. С такой настройкой у вас есть гибкость в изменении данных, зная, что любые изменения данных применяются только к тестовой базе данных.

Обратите внимание, что этот сервер не автоматически обнаруживает изменения в вашем исходном коде Python (как runserver). Однако он обнаруживает изменения в шаблонах.

--addrport ADDRPORT

Устанавливает другой порт или IP-адрес и порт по умолчанию 127.0.0.1:8000. Это значение следует точно такому же формату и выполняет точно такую же функцию, как аргумент команды runserver.

Примеры:

Для запуска тестового сервера на порту 7000 с fixture1 и fixture2:

django-admin testserver --addrport 7000 fixture1 fixture2
django-admin testserver fixture1 fixture2 --addrport 7000

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

Для запуска на 1.2.3.4:7000 с test фикстурой:

django-admin testserver --addrport 1.2.3.4:7000 test
--noinput, --no-input

Отключает все запросы пользователю. Типичный запрос — предупреждение об удалении существующей тестовой базы данных.

Команды, предоставляемые приложениями

Некоторые команды доступны только тогда, когда приложение django.contrib, которое их реализует, было enabled. Этот раздел описывает их, сгруппированные по приложениям.

django.contrib.auth

changepassword

django-admin changepassword [<username>]

Эта команда доступна только если установлена система аутентификации Django система аутентификации (django.contrib.auth).

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

--database DATABASE

Указывает базу данных для запроса пользователя. По умолчанию default.

Пример использования:

django-admin changepassword ringo

createsuperuser

django-admin createsuperuser
DJANGO_SUPERUSER_PASSWORD

Эта команда доступна только если установлена система аутентификации Django система аутентификации (django.contrib.auth).

Создает учетную запись суперпользователя (пользователя, обладающего всеми правами). Это полезно, если вам нужно создать начальную учетную запись суперпользователя или если вам нужно программно генерировать учетные записи суперпользователей для вашего сайта(ов).

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

В неинтерактивном режиме USERNAME_FIELD и необходимые поля (перечисленные в REQUIRED_FIELDS) обращаются к переменным окружения DJANGO_SUPERUSER_<uppercase_field_name>, если они не переопределены аргументом командной строки. Например, чтобы указать поле email, вы можете использовать переменную окружения DJANGO_SUPERUSER_EMAIL.

--noinput, --no-input

Отключает все запросы к пользователю. Если отключаемый запрос не может быть автоматически решён, команда завершится с кодом ошибки 1.

--username USERNAME
--email EMAIL

Имя пользователя и адрес электронной почты для новой учетной записи можно указать, используя аргументы --username и --email в командной строке. Если ни один из них не указан, createsuperuser запросит его при интерактивном запуске.

--database DATABASE

Указывает базу данных, в которую будет сохранён объект суперпользователя.

Вы можете наследовать командный скрипт и переопределить get_input_data(), если хотите настроить ввод и валидацию данных. Обратитесь к исходному коду для получения подробной информации об имеющейся реализации и параметрах метода. Например, это может быть полезно, если у вас есть ForeignKey в REQUIRED_FIELDS и вы хотите создать экземпляр вместо ввода первичного ключа существующего экземпляра.

django.contrib.contenttypes

remove_stale_contenttypes

django-admin remove_stale_contenttypes

Эта команда доступна только при установке приложения Django «contenttypes» приложения contenttypes (django.contrib.contenttypes).

Удаляет устаревшие типы содержимого (из удалённых моделей) в вашей базе данных. Также будут удалены все объекты, зависящие от удалённых типов содержимого. Список удалённых объектов будет отображён перед подтверждением удаления.

--database DATABASE

Указывает базу данных для использования. По умолчанию default.

--include-stale-apps

Удаляет устаревшие типы содержимого, включая типы из ранее установленных приложений, которые были удалены из INSTALLED_APPS. По умолчанию False.

django.contrib.gis

ogrinspect

Эта команда доступна только если установлен GeoDjango GeoDjango (django.contrib.gis).

См. description в документации GeoDjango.

django.contrib.sessions

clearsessions

django-admin clearsessions

Может выполняться как задача cron или непосредственно для очистки истекших сеансов.

django.contrib.staticfiles

collectstatic

Эта команда доступна только при установке приложения статических файлов приложения статических файлов (django.contrib.staticfiles).

См. description в документации staticfiles.

findstatic

Эта команда доступна только при установке приложения статических файлов приложения статических файлов (django.contrib.staticfiles).

См. description в документации staticfiles.

Параметры по умолчанию

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

--pythonpath PYTHONPATH

Добавляет указанный путь к файловой системе в атрибут модуля Python sys.path. Если этот параметр не задан, django-admin будет использовать переменную среды PYTHONPATH.

Этот параметр не нужен в manage.py, потому что он самостоятельно устанавливает путь к Python.

Пример использования:

django-admin migrate --pythonpath='/home/djangoprojects/myproject'
--settings SETTINGS

Указывает модуль настроек, который нужно использовать. Модуль настроек должен быть в синтаксисе пакета Python, например, mysite.settings. Если этот параметр не задан, django-admin будет использовать переменную среды DJANGO_SETTINGS_MODULE.

Этот параметр не нужен в manage.py, потому что он по умолчанию использует settings.py из текущего проекта.

Пример использования:

django-admin migrate --settings=mysite.settings
--traceback

Отображает полный стек вызовов при возникновении CommandError. По умолчанию, django-admin будет отображать сообщение об ошибке при возникновении CommandError и полный стек вызовов для других исключений.

Этот параметр игнорируется runserver.

Пример использования:

django-admin migrate --traceback
--verbosity {0,1,2,3}, -v {0,1,2,3}

Указывает количество уведомлений и отладочной информации, которое команда должна выводить в консоль.

  • 0 — отсутствие вывода.
  • 1 — нормальный вывод (по умолчанию).
  • 2 — подробный вывод.
  • 3 — очень подробный вывод.

Этот параметр игнорируется runserver.

Пример использования:

django-admin migrate --verbosity 2
--no-color

Отключает цветной вывод команд. Некоторые команды форматируют свой вывод, чтобы он был цветным. Например, ошибки будут выводиться в консоль красным цветом, а SQL-запросы — с синтаксическим выделением.

Пример использования:

django-admin runserver --no-color
--force-color

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

--skip-checks

Пропускает выполнение системных проверок перед выполнением команды. Этот параметр доступен только если атрибут команды requires_system_checks не является пустым списком или кортежем.

Пример использования:

django-admin migrate --skip-checks

Дополнительные удобства

Цветной вывод синтаксиса

DJANGO_COLORS

Команды django-admin / manage.py будут использовать красивую цветную кодировку вывода, если ваш терминал поддерживает ANSI-цветной вывод. Он не будет использовать цветовые коды, если вы направляете вывод команды в другую программу, если не используется опция --force-color.

Поддержка Windows

В Windows 10 приложения Windows Terminal, VS Code и PowerShell (где включена обработка виртуального терминала) позволяют использовать цветной вывод и поддерживаются по умолчанию.

В Windows традиционная консоль cmd.exe не поддерживает ANSI-последовательности эскапирования, поэтому по умолчанию цветной вывод отсутствует. В этом случае необходимо использовать одну из двух сторонних библиотек:

  • Установите пакет Python colorama, который преобразует ANSI-коды цвета в вызовы API Windows. Команды Django обнаружат его наличие и будут использовать его возможности для окрашивания вывода так же, как и на платформах на основе Unix. Установить colorama можно с помощью pip:

    ...\> py -m pip install "colorama >= 0.4.6"
    
  • Установите сторонний инструмент ANSICON, который позволяет cmd.exe обрабатывать ANSI-коды цвета. Команды Django обнаружат его наличие и будут использовать его возможности для окрашивания вывода так же, как и на платформах на основе Unix.

Другие современные среды терминала в Windows, которые поддерживают цвета терминала, но которые не автоматически распознаются Django, могут «симулировать» установку ANSICON, установив соответствующую переменную окружения, ANSICON="on".

Настройка цветов

Цвета, используемые для подсветки синтаксиса, можно настроить. Django поставляется с тремя палитрами цветов:

  • dark, подходит для терминалов, отображающих белый текст на черном фоне. Это палитра по умолчанию.
  • light, подходит для терминалов, отображающих черный текст на белом фоне.
  • nocolor, которая отключает подсветку синтаксиса.

Вы выбираете палитру, установив переменную окружения DJANGO_COLORS для указания желаемой палитры. Например, чтобы указать палитру light в оболочке Bash под Unix или OS/X, вы выполните следующую команду в командной строке:

export DJANGO_COLORS="light"

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

  • error - Большая ошибка.
  • notice - Небольшая ошибка.
  • success - Успех.
  • warning - Предупреждение.
  • sql_field - Имя поля модели в SQL.
  • sql_coltype - Тип поля модели в SQL.
  • sql_keyword - Ключевое слово SQL.
  • sql_table - Имя модели в SQL.
  • http_info - Информационный ответ сервера HTTP (1XX).
  • http_success - Успешный ответ сервера HTTP (2XX).
  • http_not_modified - Ответ сервера HTTP (304) «Не изменено».
  • http_redirect - Переадресация сервера HTTP (3XX) кроме 304.
  • http_not_found - Ответ сервера HTTP (404) «Не найдено».
  • http_bad_request - Ответ сервера HTTP (4XX) «Неверный запрос» кроме 404.
  • http_server_error - Ответ сервера HTTP (5XX) «Ошибка сервера».
  • migrate_heading - Заголовок в команде управления миграциями.
  • migrate_label - Имя миграции.

Каждой из этих ролей можно назначить определенный цвет переднего и заднего плана из следующего списка:

  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white

Каждый из этих цветов затем может быть изменён, используя следующие параметры отображения:

  • bold
  • underscore
  • blink
  • reverse
  • conceal

Указание цвета следует одному из следующих шаблонов:

  • role=fg
  • role=fg/bg
  • role=fg,option,option
  • role=fg/bg,option,option

где role — имя допустимой роли цвета, fg — цвет переднего плана, bg — цвет фона, а каждая option — один из параметров изменения цвета. Несколько спецификаций цветов разделяются точкой с запятой. Например:

export DJANGO_COLORS="error=yellow/blue,blink;notice=magenta"

установит отображение ошибок мигающим жёлтым цветом на синем фоне, а уведомления — пурпурным. Все остальные роли цвета останутся без цвета.

Цвета также могут быть указаны путём расширения базовой палитры. Если вы в спецификации цвета укажите имя палитры, все цвета, подразумеваемые этой палитрой, будут загружены. Например:

export DJANGO_COLORS="light;error=yellow/blue,blink;notice=magenta"

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

Автодополнение для Bash

Если вы используете оболочку Bash, рассмотрите установку скрипта автодополнения Django для Bash, который находится в extras/django_bash_completion в дистрибутиве исходного кода Django. Он позволяет выполнять автодополнение команд django-admin и manage.py, например…

  • Введите django-admin.
  • Нажмите [TAB], чтобы увидеть все доступные варианты.
  • Введите sql, затем [TAB], чтобы увидеть все доступные варианты, имена которых начинаются с sql.

См. Как создать пользовательские команды django-admin для получения информации о том, как добавить настраиваемые действия.

Форматирование с помощью Black

Файлы Python, созданные командами startproject, startapp, optimizemigration, makemigrations и squashmigrations, форматируются с помощью команды black, если она присутствует в вашей PATH.

Если у вас black установлена глобально, но вы не хотите использовать её для текущего проекта, вы можете явно задать PATH:

PATH=path/to/venv/bin django-admin makemigrations

Для команд, использующих stdout, вы можете перенаправить вывод в black, если необходимо:

django-admin inspectdb | black -

Выполнение команд управления из вашего кода

django.core.management.call_command(name, *args, **options)

Для вызова команды управления из кода используйте call_command().

name

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

*args

список аргументов, принимаемых командой. Аргументы передаются в парсер аргументов, поэтому вы можете использовать тот же стиль, что и в командной строке. Например, call_command('flush', '--verbosity=0').

**options

именные опции, принимаемые в командной строке. Опции передаются команде без запуска парсера аргументов, что означает, что вам нужно передать правильный тип. Например, call_command('flush', verbosity=0) (нуль должен быть целым числом, а не строкой).

Примеры:

from django.core import management
from django.core.management.commands import loaddata

management.call_command("flush", verbosity=0, interactive=False)
management.call_command("loaddata", "test_data", verbosity=0)
management.call_command(loaddata.Command(), "test_data", verbosity=0)

Обратите внимание, что опции команд, не принимающие аргументов, передаются в качестве ключевых слов с True или False, как вы можете увидеть с опцией interactive выше.

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

# Similar to the command line
management.call_command("dumpdata", "--natural-foreign")

# Named argument similar to the command line minus the initial dashes and
# with internal dashes replaced by underscores
management.call_command("dumpdata", natural_foreign=True)

# `use_natural_foreign_keys` is the option destination variable
management.call_command("dumpdata", use_natural_foreign_keys=True)

У некоторых опций команд есть разные имена при использовании call_command() вместо django-admin или manage.py. Например, django-admin createsuperuser --no-input преобразуется в call_command('createsuperuser', interactive=False). Чтобы узнать, какое ключевое слово использовать для call_command(), проверьте исходный код команды для аргумента dest, переданного parser.add_argument().

Опции команд, принимающие несколько опций, передаются в списке:

management.call_command("dumpdata", exclude=["contenttypes", "auth"])

Возвращаемое значение функции call_command() такое же, как возвращаемое значение метода handle() команды.

Перенаправление вывода

Обратите внимание, что вы можете перенаправлять стандартные потоки вывода и ошибок, так как все команды поддерживают опции stdout и stderr. Например, вы можете написать:

with open("/path/to/command_output", "w") as f:
    management.call_command("dumpdata", stdout=f)

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.2/ref/django-admin/

Spec-Zone.ru

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