如何在python manage.py中使用命令行参数

时间:2017-08-02 09:42:32

标签: python django

运行下图中显示的命令时出现错误

enter image description here

python manage.py shell <processing.py 66

错误是

usage: manage.py shell [-h] [--version] [-v {0,1,2,3}] [--settings SETTINGS]
                   [--pythonpath PYTHONPATH] [--traceback] [--no-color]
                   [--plain] [--no-startup] [-i {ipython,bpython,python}]
                   [-c COMMAND]

我认为这不是使用shell时传递参数的正确方法。    我不能直接写

python processing.py

因为我使用数据库过滤,所以我必须使用shell。

这是我的processing.py

import os
import sys
from webapp.models import status


dirname = sys.argv[1]

print(os.getcwd())
sta = status.objects.filter(status_id=66)[0]
sta.status = True
sta.save()
print(sta.status)

提前致谢

1 个答案:

答案 0 :(得分:1)

看起来您想要创建自定义管理命令,如评论中所述。下面是一个示例,它将打印一个传递的命令行参数,该参数应放置在类似myapp/management/commands/say.py的位置的应用程序中,并使用python manage.py say --printme StackOverFlow调用:

from django.core.management.base import BaseCommand


class Command(BaseCommand):
    """
    This command will print a command line argument.
    """
    help = 'This command will import locations from a CSV file into the hivapp Locations model.'

    def add_arguments(self, parser):
        parser.add_argument(
            '--printme',
            action='store',
            dest='printme',
            default="Hello world!",
            help='''The string to print.'''
        )

    def handle(self, *args, **options):
        print(options['printme'])

您可以传递一个文件名来迭代并运行一个命令列表,尽管将命令合并到命令中会更安全。祝你好运!