2016-12-30 3 views
1

Я использую Django 1.10.4 и Python 3.52. Когда я пытаюсь запустить команду Django через я получаю следующее сообщение об ошибке:Django command throws TypeError: handle() получил неожиданный аргумент ключевого слова

Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "path_to_envs/envs/env_name/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "path_to_envs/envs/env_name/lib/python3.5/site-packages/django/core/management/__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "path_to_envs/envs/env_name/lib/python3.5/site-packages/django/core/management/base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "path_to_envs/envs/env_name/lib/python3.5/site-packages/django/core/management/base.py", line 345, in execute 
    output = self.handle(*args, **options) 
TypeError: handle() got an unexpected keyword argument 'verbosity' 

я могу запустить локальный сервер Джанго и взаимодействовать с администратором страниц. Приложение, содержащее эту команду, находится в моем файле settings.py.

Ниже приводится содержание команды Джанго:

from django.core.management import BaseCommand 
from my_module import MyClass 


class Command(BaseCommand): 
    def handle(self): 
     my_class = MyClass() 
     my_class.my_method() 

В момент ошибки, options словарь содержит {'verbosity': 1, 'no_color': False, 'settings': None, 'pythonpath': None, 'traceback': False}. В зависимости от случайного порядка словаря no_color, traceback, а остальные будут бросать то же самое TypeError. После дня похода я все еще не могу понять, в чем проблема. Кто-нибудь видел это раньше?

+1

Вы не должны показать код my_command? –

+0

@ DanielRoseman Приношу свои извинения. Команда настолько проста, что я не стал ее добавлять. Сейчас в этом вопросе. – AdamY

ответ

5

После многих поисковых запросов и вытягивания волос, вопрос был неправильным числом аргументов handle().

Это:

def handle(self): 

Должно быть:

def handle(self, *args, **options): 
-1

Если команда не нуждается в аргументы, попробуйте subclass of BaseCommand

NoArgsCommand.handle_noargs(**options) 
Смежные вопросы