Обработка контроллера с отсутствующими параметрами контроллера в турбогенераторах 2

StackOverflow https://stackoverflow.com/questions/1067056

  •  21-08-2019
  •  | 
  •  

Вопрос

Предположим, у меня есть такой метод контроллера:

@expose()
def search(self, title):
    return dict()

Собираюсь в http://сайт/поиск/ вызовет исключение:ТипОшибка:search() принимает ровно 2 аргумента (1 задан).

Ошибка логична, но я бы предпочел справиться с ней более изящно.Является ли использование *args или **kwargs единственным способом избежать ошибки, которую я даже не могу уловить?

РЕДАКТИРОВАТЬ:Думаю, я всегда мог бы использовать title=None, но слишком это может стать некрасивым...

В любом случае, есть ли способ более изящно перехватить исключение и/или обработать несоответствие аргументов?

Спасибо

Это было полезно?

Решение

Исключение, выдаваемое вам за указание «несовместимой» сигнатуры метода контроллера, происходит только в режиме отладки/разработки.Вам не нужно более изящно обращаться с этим в производственной среде, потому что, как только вы отключите режим разработки, методы контроллера отправят ошибку HTTP 500, когда им не хватает важных параметров.

Возможно, вы захотите рассмотреть соответствующие настройки в вашем development.ini:

# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
# execute malicious code after an exception is raised.
set debug = false

Надеюсь, это был ваш вопрос.

В случае, если вы все равно хотите, чтобы контроллер выполнял свою работу, даже если у него отсутствуют важные параметры, вы должны определить значения по умолчанию, иначе контроллер все равно не сможет выполнять свою работу должным образом.Вопрос, который вам лучше задать себе:Вам просто нужно более красивое сообщение об ошибке или вы хотите, чтобы контроллер мог выполнять свою задачу?В последнем случае лучше всего указывать параметры по умолчанию: *args и **kwargs для каждого метода только для того, чтобы клиент не получил ошибку, по моему мнению, это очень некрасивый хак.

Если вы хотите изменить отображение этих ошибок, обратитесь к /controllers/error.py.

Надеюсь, это помогло,

Том

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top