2017-08-02 47 views
0

當我運行下面如何使用命令行參數使用python manage.py

圖像中所示的命令我得到一個錯誤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 

因爲我使用的數據庫過濾,所以我必須使用外殼。

這是我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) 

在此先感謝

+4

我認爲你需要編寫一個自定義的django-admin命令。看看這個https://docs.djangoproject.com/en/1.11/howto/custom-management-commands/ – ohannes

回答

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']) 

你可以傳遞一個文件名以遍歷儘管將命令併入您的命令將會更安全。祝你好運!