Есть ли способ добавить пользовательские команды django-admin.py, которые работают вне проектов? - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь написать собственную команду, которая работает вне проектов Django.Я думал, что смогу следовать шаблонам кодирования таких собственных команд Django (например, startproject), включить свою команду в приложение и установить ее.

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

Есть ли способ заставить это работать или я, к сожалению, прав?

ОБНОВЛЕНИЕ: я должен отметить, что цель, которую я пытался достичь (написание команды, запускающей проекты на основе пользовательских шаблонов), поддерживается в следующем выпуске Django версии 1.4: https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-startproject (см.опция - шаблон).

Ответы [ 3 ]

1 голос
/ 20 декабря 2011

Исходя из этого кода из django.core.management , кажется, что django ищет только команды без проекта в своих собственных пакетах, а затем находит команду только путем сканирования INSTALLED_APPS, что означаеттребуется проект.

0 голосов
/ 21 декабря 2011

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

Я делаю следующее:

  1. поместите мой код в script.py

  2. manage.py shell

  3. ExecFile ( 'script.py')

Может быть, это помогает.

0 голосов
/ 21 декабря 2011

Вы можете использовать пользовательский manage.py.

Вам нужен проект.Проект, тем не менее, представляет собой не что иное, как пакет python с settings.py (и, возможно, файлом urls.py)

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

Я использую его, чтобы файл manage.py находился в пути binvirtualenv, но вы можете назвать это как-нибудь еще, и этот "django" проект будет установлен в вашей системе python.

...