Когда следует использовать django-admin.py verus manage.py? - PullRequest
16 голосов
/ 10 июля 2010

Фон:

Когда я запускаю django-admin.py loaddata example.json, я получаю эту ошибку.«ImportError: Невозможно импортировать настройки, поскольку переменная окружения DJANGO_SETTINGS_MODULE не определена».Я понимаю проблему.Для этого импорта требуется DJANGO_SETTINGS_MODULE, чтобы иметь доступ к базе данных.У меня была эта проблема раньше, и я до сих пор обходил ее стороной.

Читая документы, я обнаружил, что manage.py - это оболочка для django-admin.py;он помещает проект в sys.path и устанавливает среду DJANGO_SETTINGS_MODULE.Woot!Вау!Я знаю, как решить мою проблему.

Так ... Почему примеры кода документации Django используют django-admin.py вместо manage.py при демонстрации подкоманд, таких как loaddataи dumpdata?

Ответы [ 2 ]

19 голосов
/ 11 июля 2010

Если установлена ​​переменная окружения DJANGO_SETTINGS_MODULE, вы можете использовать django-admin.py из любого рабочего каталога, в то время как вам нужно находиться в каталоге проекта, чтобы использовать ./manage.py (или иметь его в своем пути).

Используйте virtualenv, и установите DJANGO_SETTINGS_MODULE на bin/activate, а затем вы можете использовать django-admin.py

7 голосов
/ 10 июля 2010

Почему примеры кода документации Django используют django-admin.py вместо manage.py при демонстрации подкоманд, таких как loaddata и dumpdata?

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

django-admin.py <subcommand> [options]
manage.py <subcommand> [options]

бок о бок. Обычно вы используете django-admin.py для запуска нового проекта или приложения и manage.py для всего остального.

...