从代码运行管理命令

django.core.management.call_command(name, *args, **options)

要从代码使用call_command调用管理命令。

name
the name of the command to call.
*args
a list of arguments accepted by the command.
**options
named options accepted on the command-line.

例子:

from django.core import management
management.call_command('flush', verbosity=0, interactive=False)
management.call_command('loaddata', 'test_data', verbosity=0)

请注意,不带参数的命令选项将作为具有TrueFalse的关键字传递,您可以在上面的interactive选项中看到。

命名参数可以通过使用以下语法之一传递:

# Similar to the command line
management.call_command('dumpdata', '--natural-foreign')

# Named argument similar to the command line minus the initial dashes and
# with internal dashes replaced by underscores
management.call_command('dumpdata', natural_foreign=True)

# `use_natural_foreign_keys` is the option destination variable
management.call_command('dumpdata', use_natural_foreign_keys=True)
Changed in Django 1.8:

由于使用argparse模块的管理命令,现在支持第一种语法。对于第二种语法,Django先前为命令传递了选项名称,现在它总是使用dest变量​​名称(可能与选项名称相同或不同)。

采用多个选项的命令选项传递列表:

management.call_command('dumpdata', exclude=['contenttypes', 'auth'])

输出重定向

请注意,您可以重定向标准输出和错误流,因为所有命令都支持stdoutstderr选项。例如,您可以写:

with open('/tmp/command_output') as f:
    management.call_command('dumpdata', stdout=f)
 
posted @ 2017-10-24 17:37  hyu9999  Views(223)  Comments(0)    收藏  举报