Ответ 1
В django 1.8 вы должны добавить аргументы к команде:
class Command(BaseCommand):
...
def add_arguments(self, parser):
parser.add_argument('username')
parser.add_argument('password')
add_argument()
метод argparse
описан здесь.
UPDATE. По умолчанию аргументы передаются в параметре options
, поэтому метод handle()
должен выглядеть следующим образом:
def handle(self, *args, **options):
username = options['username']
password = options['password']
...
И вам не нужно проверять длину списка args
- это уже сделано с помощью argparse
. Это рекомендуемый метод, но если вы хотите использовать аргумент args
, тогда вы должны использовать "режим совместимости" и называть добавленный аргумент как args
:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('args')
def handle(self, *args, **options):
if len(args) != 2:
...
Прочитайте примечание "Изменено в Django 1.8" в первой главе документов (сразу после примера closepoll.py
).
UPDATE2. Вот полный рабочий пример:
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('username')
parser.add_argument('password')
def handle(self, *args, **options):
username = options['username']
password = options['password']
return u'Username: %s Password: %s' % (username, password)