django 'модуль' объект не имеет атрибута 'call_command' - PullRequest
0 голосов
/ 09 августа 2010

Я написал функцию типа

def cmd_run(host="localhost", port="8000"):
    """Run server at given host port (or localhost 8000)"""
    from django.core import management
    host_port = '%s:%s' % (host, port)
    management.call_command('runserver', host_port)

Когда я ее выполнил, было сгенерировано исключение:

Traceback (most recent call last):
  File "/home/leona/workspace/bettyskitchen/lib/djangocliutils/bin/djangoctl", line 8, in <module> cli(*sys.argv[1:])
  File "/home/leona/workspace/bettyskitchen/lib/djangocliutils/cmds.py", line 119, in  __call__ 
print method(*args) or ""
  File "/home/leona/workspace/bettyskitchen/lib/djangocliutils/cmds.py", line 170, in __call__
    return self.method(*args, **kw)
  File "/home/leona/workspace/bettyskitchen/lib/djangocliutils/djangocmds/basic.py", line 19, in cmd_run
    management.call_command('runserver', host_port)
AttributeError: 'module' object has no attribute 'call_command'

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 09 августа 2010

Эта проблема решена, django, который я использовал, был 0.96, не поддерживающий функцию call_command, поэтому я изменил на:

def cmd_run(host="localhost", port="8000"):
    """Run server at given host port (or localhost 8000)"""
    from django.core import management
    management.runserver(host, port)

и на этот раз это работает!

0 голосов
/ 09 августа 2010

Ну, вот это работает ... может быть, ваша версия django не имеет этой функции? Попробуйте это в управляемой оболочке python manage.py shell и попробуйте help(management), чтобы увидеть, есть ли она в вашей версии. Другой возможностью является повреждение или изменение файла __init__.py (где определена команда call_com) в каталоге django.core.management, не импортирующем функцию call_command.

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