为指定“不兼容”控制器方法签名而引发的异常仅在调试/开发模式下发生。您不需要在生产环境中更优雅地处理它,因为一旦您禁用开发模式,控制器方法会在缺少必要参数时发送 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 只是为了让客户不会收到错误,这是我的选择中非常丑陋的 hack。
如果要更改这些错误的显示,请参阅 /controllers/error.py
希望这有帮助,
汤姆