django '模块'对象没有'call_command'属性

0 投票
2 回答
997 浏览
提问于 2025-04-16 02:30

我写了一个函数,代码如下:

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

这个问题解决了,我用的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

好吧,这里是可以工作的……也许你用的django版本没有这个功能?你可以试试在管理命令行中输入 python manage.py shell,然后输入 help(management),看看你的版本里有没有这个功能。还有一种可能是 __init__.py 文件被损坏或者修改了(这个文件里定义了 call_command),在 django.core.management 目录下没有正确导入 call_command 函数。

撰写回答