django-admin
и manage.py
¶
django-admin
это утилита командной строки Django для административных задач. Этот документ описывает все, что он может делать.
Кроме того, manage.py
автоматически создается в каждом проекте Django. Он делает то же самое, django-admin
но также устанавливает
DJANGO_SETTINGS_MODULE
переменная окружения, чтобы она указывала на settings.py
файл вашего проекта .
django-admin
Сценарий должен быть в вашем системном пути , если вы установили Django с помощью pip
. Если это не на вашем пути, убедитесь, что ваша виртуальная среда активирована.
Как правило, при работе с одним проектом 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.django-admin version
Вывод соответствует схеме, описанной в PEP 440 :
1.4.dev17026
1.4a1
1.4
Отображение вывода отладки ¶
Используется --verbosity
для указания количества уведомлений и отладочной информации, django-admin
выводимой на консоль.
Доступные команды ¶
check
¶
-
django-admin check [app_label [app_label ...]]
¶
Использует фреймворк проверки системы для проверки всего проекта 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
По умолчанию эти проверки не запускаются.
Список всех доступных тегов.
-
--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() |
+----------------------+
| [email protected] |
+----------------------+
...\> django-admin dbshell -- -e "select user()"
+----------------------+
| user() |
+----------------------+
| [email protected] |
+----------------------+
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
для выбора записей для дампа используется диспетчер по умолчанию в модели. Если вы используете настраиваемый диспетчер в качестве диспетчера по умолчанию и он фильтрует некоторые из доступных записей, не все объекты будут сброшены.
-
--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 рядом с полем в сгенерированной модели. Распознаваемые поля могут зависеть от приложений, перечисленных в . Например, добавляет распознавание для нескольких типов полей, специфичных для PostgreSQL.'This field type is a guess.'
INSTALLED_APPS
django.contrib.postgres
- Если имя столбца базы данных является зарезервированным словом 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
поле модели указано a. Точно так же значения по умолчанию для базы данных не преобразуются в значения по умолчанию для полей модели и не обнаруживаются каким-либо образом с помощью inspectdb
.
По умолчанию inspectdb
создает неуправляемые модели. То есть
в классе модели говорит Django не управлять созданием, изменением и удалением каждой таблицы. Если вы действительно хотите разрешить Django управлять жизненным циклом таблицы, вам нужно изменить этот
параметр на (или удалить его, поскольку это значение по умолчанию).managed = False
Meta
managed
True
True
Примечания к базе данных ¶
Оракул ¶
- Модели создаются для материализованных представлений, если они
--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
) для фикстур, считываемых из stdin .
-
--exclude
EXCLUDE
,
-e
EXCLUDE
¶
Исключает загрузку светильников из указанных приложений и / или моделей (в форме app_label
или app_label.ModelName
). Используйте эту опцию несколько раз, чтобы исключить более одного приложения или модели.
Что такое «приспособление»? ¶
Приспособление представляет собой набор файлов, содержащих сериализованные содержимое базы данных. У каждого прибора есть уникальное имя, и файлы, составляющие прибор, могут быть распределены по нескольким каталогам в нескольких приложениях.
Django будет искать приспособления в трех местах:
- В
fixtures
каталоге каждого установленного приложения - В любом каталоге, указанном в
FIXTURE_DIRS
настройке - В буквальном пути, названном приспособлением
Django загрузит все приборы, которые он найдет в этих местах, которые соответствуют указанным именам.
Если названный прибор имеет расширение файла, будут загружены только приборы этого типа. Например:
django-admin loaddata mydata.json
будет загружать только вызываемые фикстуры JSON mydata
. Расширение фикстуры должно соответствовать зарегистрированному имени
сериализатора (например, json
или xml
).
Если вы опустите расширения, Django будет искать подходящие устройства во всех доступных типах устройств. Например:
django-admin loaddata mydata
искал бы любое приспособление любого названного типа приспособления mydata
. Если каталог фикстур содержался mydata.json
, то этот фикстур был бы загружен как фикстур JSON.
Названные приборы могут включать в себя компоненты каталога. Эти каталоги будут включены в путь поиска. Например:
django-admin loaddata foo/bar/mydata.json
будет искать <app_label>/fixtures/foo/bar/mydata.json
каждое установленное приложение, <dirname>/foo/bar/mydata.json
каждый каталог в
FIXTURE_DIRS
и буквальный путь foo/bar/mydata.json
.
При обработке файлов фикстур данные сохраняются в базе данных как есть. save()
Методы, определенные моделью , не вызываются, и будут вызываться любые сигналы
pre_save
или,
поскольку экземпляр содержит только атрибуты, которые являются локальными для модели. Например, вы можете отключить обработчики, которые обращаются к связанным полям, которые отсутствуют во время загрузки фикстуры, и в противном случае могут вызвать исключение:post_save
raw=True
from django.db.models.signals import post_save
from .models import MyModel
def my_handler(**kwargs):
# disable the handler during fixture loading
if kwargs['raw']:
return
...
post_save.connect(my_handler, sender=MyModel)
Вы также можете написать декоратор для инкапсуляции этой логики:
from functools import wraps
def disable_for_loaddata(signal_handler):
"""
Decorator that turns off signal handlers when loading fixture data.
"""
@wraps(signal_handler)
def wrapper(*args, **kwargs):
if kwargs['raw']:
return
signal_handler(*args, **kwargs)
return wrapper
@disable_for_loaddata
def my_handler(**kwargs):
...
Просто имейте в виду, что эта логика будет отключать сигналы всякий раз, когда приборы будут десериализованы, а не только во время loaddata
.
Обратите внимание, что порядок, в котором обрабатываются файлы фикстур, не определен. Однако все данные прибора устанавливаются как одна транзакция, поэтому данные одного прибора могут ссылаться на данные другого прибора. Если серверная часть базы данных поддерживает ограничения на уровне строк, эти ограничения будут проверяться в конце транзакции.
dumpdata
Команда может быть использована , чтобы генерировать вход для loaddata
.
Сжатые приспособления ¶
Светильники могут быть сжаты в zip
, gz
, bz2
, lzma
, или xz
формат. Например:
django-admin loaddata mydata.json
будет искать любой из mydata.json
, mydata.json.zip
, mydata.json.gz
,
mydata.json.bz2
, mydata.json.lzma
, или mydata.json.xz
. Используется первый файл, содержащийся в сжатом архиве.
Обратите внимание, что если обнаружены два прибора с одинаковым именем, но с разными типами прибора (например, если mydata.json
и
mydata.xml.gz
были найдены в одном каталоге приборов), установка прибора будет прервана, и все данные, установленные в вызове,
loaddata
будут удалены из базы данных. .
MySQL с MyISAM и приспособлениями
Механизм хранения MyISAM MySQL не поддерживает транзакции или ограничения, поэтому, если вы используете MyISAM, вы не получите проверки данных фикстуры или отката, если будет найдено несколько файлов транзакций.
Добавлена поддержка архивов XZ ( .xz
) и архивов LZMA ( .lzma
).
Приспособления для базы данных ¶
Если вы используете установку с несколькими базами данных, у вас могут быть данные фикстур, которые вы хотите загрузить в одну базу данных, но не в другую. В этой ситуации вы можете добавить идентификатор базы данных в имена ваших приборов.
Например, если в вашей DATABASES
настройке определена «основная» база данных, назовите прибор mydata.master.json
или
прибор, mydata.master.json.gz
и прибор будет загружен только тогда, когда вы укажете, что хотите загрузить данные в master
базу данных.
Загрузка светильников из 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 -
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
есть js
).
Пример использования:
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 или новее.
-
--keep-pot
¶
Предотвращает удаление временных .pot
файлов, созданных перед созданием
.po
файла. Это полезно для отладки ошибок, которые могут помешать созданию окончательных языковых файлов.
Смотрите также
См Customizing в makemessages команда для получения инструкций о том , как настроить ключевые слова , которые makemessages
проходят в xgettext
.
makemigrations
¶
-
django-admin makemigrations [app_label [app_label ...]]
¶
Создает новые миграции на основе изменений, обнаруженных в ваших моделях. Миграции, их связь с приложениями и многое другое подробно описано в документации по миграции .
Предоставление одного или нескольких имен приложений в качестве аргументов ограничит миграции, созданные указанными приложениями, и любые необходимые зависимости (например, таблица на другом конце a 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
выход с ненулевым статусом при обнаружении изменений модели без миграций.
makemigrations
Добавлена поддержка вызова без активного подключения к базе данных. В этом случае проверка последовательной истории миграции пропускается.
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
выход с ненулевым статусом при обнаружении непримененных миграций.
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 с проектом, который включает в себя большие каталоги node_modules
, отличные от Python, например , рекомендуется игнорировать этот каталог для оптимальной производительности. См. Документацию сторожа для получения информации о том, как это сделать.
Тайм-аут сторожа
-
DJANGO_WATCHMAN_TIMEOUT
¶
Тайм-аут Watchman
клиента по умолчанию составляет 5 секунд. Вы можете изменить его, установивDJANGO_WATCHMAN_TIMEOUT
переменная окружения.
Когда вы запускаете сервер и каждый раз, когда вы меняете код Python во время работы сервера, фреймворк проверки системы будет проверять весь ваш проект Django на наличие некоторых распространенных ошибок (см. check
Команду). Если будут обнаружены какие-либо ошибки, они будут распечатаны на стандартный вывод.
Вы можете запускать столько одновременных серверов, сколько хотите, если они находятся на разных портах, выполняя их более одного раза.django-admin runserver
Обратите внимание, что IP-адрес по умолчанию 127.0.0.1
недоступен с других компьютеров в вашей сети. Чтобы сделать ваш сервер разработки доступным для просмотра на других машинах в сети, используйте его собственный IP-адрес (например 192.168.2.1
) или
0.0.0.0
или ::
(с включенным IPv6).
Вы можете указать IPv6-адрес в скобках (например [200a::1]:8000
). Это автоматически включит поддержку IPv6.
Также можно использовать имя хоста, содержащее только символы ASCII.
Если приложение staticfiles contrib включено (по умолчанию в новых проектах), runserver
команда будет заменена собственной командой runserver .
Регистрация каждого запроса и ответа сервера отправляется регистратору django.server .
-
--noreload
¶
Отключает автоперезагрузчик. Это означает, что любые изменения кода Python, которые вы вносите во время работы сервера, не вступят в силу, если определенные модули Python уже были загружены в память.
-
--nothreading
¶
Отключает использование потоковой передачи на сервере разработки. По умолчанию сервер является многопоточным.
-
--ipv6
,
-6
¶
Использует IPv6 для сервера разработки. Это изменяет IP-адрес по умолчанию с
127.0.0.1
на ::1
.
Примеры использования разных портов и адресов ¶
Порт 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) .
sendtestemail
¶
-
django-admin sendtestemail [email [email ...]]
¶
Отправляет тестовое электронное письмо (чтобы подтвердить, что отправка электронной почты через Django работает) указанным получателям. Например:
django-admin sendtestemail foo@example.com bar@example.com
Есть несколько вариантов, и вы можете использовать любую их комбинацию вместе:
-
--managers
¶
Отправляет электронные сообщения на адреса электронной почты, указанные в MANAGERS
using
mail_managers()
.
-
--admins
¶
Отправляет электронные сообщения на адреса электронной почты, указанные в ADMINS
using
mail_admins()
.
shell
¶
-
django-admin shell
¶
Запускает интерактивный интерпретатор Python.
-
--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
-
--nostartup
¶
Отключает чтение сценария запуска для «простого» интерпретатора Python. По умолчанию сценарий, на который указываетPYTHONSTARTUP
переменная окружения или ~/.pythonrc.py
сценарий читается.
-
--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
Аргументы s ограничивают вывод, однако также могут быть включены зависимости предоставленных приложений.
-
--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
Джанго также будет принимать URL - адреса ( http
, https
, ftp
) в сжатые архивы с файлами шаблонов приложений, загрузки и извлечения их на лету.
Например, воспользовавшись функцией GitHub для отображения репозиториев в виде zip-файлов, вы можете использовать такой URL-адрес:
django-admin startapp --template=https://github.com/githubuser/django-app-template/archive/master.zip myapp
-
--extension
EXTENSIONS
,
-e
EXTENSIONS
¶
Указывает, какие расширения файлов в шаблоне приложения должны отображаться с помощью механизма шаблонов. По умолчанию py
.
-
--name
FILES
,
-n
FILES
¶
Указывает, какие файлы в шаблоне приложения (помимо совпадающих
--extension
) должны отображаться с помощью механизма шаблонов. По умолчанию пустой список.
Для всех совпадающих файлов используется: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
.
startproject
¶
-
django-admin startproject name [directory]
¶
Создает структуру каталогов проекта Django для данного имени проекта в текущем каталоге или в указанном месте назначения.
По умолчанию новый каталог содержит
manage.py
и пакет проекта (содержащий a 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
) должны отображаться с помощью механизма шаблонов. По умолчанию пустой список.
В используется: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
¶
Сохраняет тестовую базу данных между тестовыми запусками. Это дает то преимущество, что пропускает действия create и destroy, что может значительно сократить время выполнения тестов, особенно в большом наборе тестов. Если тестовая база данных не существует, она будет создана при первом запуске, а затем сохранена для каждого последующего запуска. Если параметр MIGRATE
тестирования не установлен
False
, любые непримененные миграции также будут применены к тестовой базе данных перед запуском набора тестов.
-
--reverse
,
-r
¶
Сортирует тестовые примеры в обратном порядке выполнения. Это может помочь в отладке побочных эффектов тестов, которые не изолированы должным образом. При использовании этой опции сохраняется группировка по тестовым классам .
-
--debug-mode
¶
Устанавливает DEBUG
настройку True
до запуска тестов. Это может помочь в устранении неполадок при тестировании.
-
--debug-sql
,
-d
¶
Включает ведение журнала SQL для неудачных тестов. Если
--verbosity
есть 2
, то также выводятся запросы при прохождении тестов.
-
--parallel
[N]
¶
-
DJANGO_TEST_PROCESSES
¶
Запускает тесты в отдельных параллельных процессах. Поскольку современные процессоры имеют несколько ядер, это позволяет выполнять тесты значительно быстрее.
По умолчанию --parallel
запускается один процесс на ядро в соответствии с
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
Python 3.7 и новее
Эта функция доступна только для Python 3.7 и новее.
-
--pdb
¶
Создает pdb
отладчик при каждой ошибке или сбое теста. Если он у вас установлен, ipdb
используется вместо него.
-
--buffer
,
-b
¶
Отбрасывает вывод ( stdout
и stderr
) при прохождении тестов, так же, как .unittest's --buffer option
-
--no-faulthandler
¶
Django автоматически вызывает faulthandler.enable()
при запуске тестов, что позволяет ему распечатать трассировку, если интерпретатор выйдет из строя. Пройдите,
--no-faulthandler
чтобы отключить это поведение.
-
--timing
¶
Выводит время, включая настройку базы данных и общее время работы.
testserver
¶
-
django-admin testserver [fixture [fixture ...]]
¶
Запускает сервер разработки Django (как в runserver
) с использованием данных из заданных устройств.
Например, эта команда:
django-admin testserver mydata.json
… Будет выполнять следующие шаги:
- Создайте тестовую базу данных, как описано в разделе Тестовая база данных .
- Заполните тестовую базу данных данными приборов из заданных приборов. (Подробнее о приспособлениях см. В документации
loaddata
выше.) - Запускает сервер разработки 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
in
REQUIRED_FIELDS
и вы хотите разрешить создание экземпляра вместо ввода первичного ключа существующего экземпляра.
django.contrib.contenttypes
¶
remove_stale_contenttypes
¶
-
django-admin remove_stale_contenttypes
¶
Эта команда доступна, только если установлено приложение Django contenttypes ( django.contrib.contenttypes
).
Удаляет устаревшие типы контента (из удаленных моделей) в вашей базе данных. Все объекты, зависящие от типов удаленного контента, также будут удалены. Список удаленных объектов будет отображен, прежде чем вы подтвердите, что можно продолжить удаление.
-
--database
DATABASE
¶
Задает базу данных для использования. По умолчанию default
.
-
--include-stale-apps
¶
Удаляет устаревшие типы контента, в том числе из ранее установленных приложений, которые были удалены из INSTALLED_APPS
. По умолчанию False
.
django.contrib.gis
¶
ogrinspect
¶
Эта команда доступна, только если установлен GeoDjango
( django.contrib.gis
).
См. Его description
в документации GeoDjango.
django.contrib.sessions
¶
django.contrib.sitemaps
¶
ping_google
¶
Эта команда доступна, только если установлена платформа Sitemaps ( django.contrib.sitemaps
).
См. Его description
в документации по файлам Sitemap.
django.contrib.staticfiles
¶
collectstatic
¶
Эта команда доступна, только если установлено приложение статических файлов ( django.contrib.staticfiles
).
См. Его description
в документации по
статическим файлам .
findstatic
¶
Эта команда доступна, только если установлено приложение статических файлов ( django.contrib.staticfiles
).
См. Его description
в документации по статическим файлам .
Параметры по умолчанию ¶
Хотя некоторые команды могут допускать свои собственные параметры, каждая команда допускает следующие параметры:
-
--pythonpath
PYTHONPATH
¶
Добавляет указанный путь файловой системы к пути поиска импорта Python . Если это не предусмотрено, 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
и полная трассировка стека для любого другого исключения.
Пример использования:
django-admin migrate --traceback
-
--verbosity
{0,1,2,3}
,
-v
{0,1,2,3}
¶
Задает количество уведомлений и отладочной информации, которые команда должна выводить на консоль.
0
означает отсутствие вывода.1
означает нормальный вывод (по умолчанию).2
означает подробный вывод.3
означает очень подробный вывод.
Пример использования:
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
собственная консоль не поддерживает escape-последовательности ANSI, поэтому по умолчанию цветовой вывод отсутствует. В этом случае необходима одна из двух сторонних библиотек:
Установите colorama , пакет Python, который переводит цветовые коды ANSI в вызовы Windows API. Команды Django обнаружат его присутствие и будут использовать его службы для цветного вывода, как на платформах на базе Unix.
colorama
можно установить через pip:...\> py -m pip install colorama
Установите ANSICON , сторонний инструмент, который позволяет
cmd.exe
обрабатывать цветовые коды ANSI. Команды Django обнаружат его присутствие и будут использовать его службы для цветного вывода, как на платформах на базе Unix.
Другие современные терминальные среды на ОС Windows, которые поддерживают терминальные цвета, но которые не были обнаружены автоматически , как поддерживается Django, может «подделка» установку ANSICON
, установив соответствующую переменную окружения,
ANSICON="on"
.
Обновлена поддержка раскраски синтаксиса в Windows.
Пользовательские цвета ¶
Цвета, используемые для выделения синтаксиса, можно настроить. Django поставляется с тремя цветовыми палитрами:
dark
, подходит для терминалов, отображающих белый текст на черном фоне. Это палитра по умолчанию.light
, подходит для терминалов, отображающих черный текст на белом фоне.nocolor
, который отключает подсветку синтаксиса.
Вы выбираете палитру, устанавливая DJANGO_COLORS
переменная среды, чтобы указать палитру, которую вы хотите использовать. Например, чтобы указать light
палитру в оболочке Unix или OS / X BASH, вы должны запустить в командной строке следующее:
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
- Ответ сервера 2XX HTTP Success.http_not_modified
- Ответ сервера 304 HTTP Not Modified.http_redirect
- Ответ сервера 3XX HTTP Redirect, отличный от 304.http_not_found
- Ответ сервера 404 HTTP Not Found.http_bad_request
- Ответ сервера 4XX HTTP Bad Request, отличный от 404.http_server_error
- Ответ 5XX HTTP Server Error.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, чтобы узнать, как добавлять настраиваемые действия.
Запуск команд управления из вашего кода ¶
-
django.core.management.
call_command
( имя , * аргументы , ** параметры ) ¶
Для вызова команды управления из кода используйте 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)