pvo*_*ten 25 django django-admin syncdb
>>> from django.core.management import call_command
>>> call_command('syncdb')
Run Code Online (Sandbox Code Playgroud)
从python脚本中执行syncdb管理命令.但是,我想运行相当于
$ python manage.py syncdb --noinput
Run Code Online (Sandbox Code Playgroud)
来自python shell或脚本.我怎样才能做到这一点?
如果不打扰我是否要创建超级用户的问题,以下行不起作用.
>>> call_command('syncdb', noinput = True) # asks for input
>>> call_command('syncdb', 'noinput') # raises an exception
Run Code Online (Sandbox Code Playgroud)
我使用Django 1.3.
pvo*_*ten 42
call_command('syncdb', interactive = False)
Run Code Online (Sandbox Code Playgroud)
编辑:
我在源代码中找到了答案.所有管理命令的源代码都可以在一个名为的python模块中找到management/commands/(command_name).py
syncdb命令所在的python模块是django.core.management.commands.syncdb
要查找命令的源代码,您可以执行以下操作:
(env)$ ./manage.py shell
>>> from django.core.management.commands import syncdb
>>> syncdb.__file__
'/home/user/env/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.pyc'
>>>
Run Code Online (Sandbox Code Playgroud)
当然,检查syncdb.py的内容,而不是syncdb.pyc.
或者查看在线源代码,该syncdb.py脚本包含:
make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells Django to NOT prompt the user for input of any kind.'),
Run Code Online (Sandbox Code Playgroud)
这告诉我们,如果我们想要使用该函数自动化命令--noinput,我们应该使用而不是在命令行上.interactivecall_command
| 归档时间: |
|
| 查看次数: |
8712 次 |
| 最近记录: |