为了账号安全,请及时绑定邮箱和手机立即绑定

python django 通过装饰器或额外函数验证用户输入?还有什么更Pythonic的吗?

python django 通过装饰器或额外函数验证用户输入?还有什么更Pythonic的吗?

暮色呼如 2024-01-15 17:16:32
我正在开发一个网络应用程序。用户可以设置一些参数来运行一些算法。因此,当我在后端提取参数时,我想在启动算法之前验证它们,这可能会在长时间执行后崩溃。我应该在算法函数周围使用装饰器,还是应该将参数传递给像 def validate_parameters() 这样的函数,如果参数不正确,它会引发错误?
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

Python 的“请求宽恕而不是许可”的经验法则是为了保持代码的简洁和易于理解。检查代码流程可以告诉您预期的路径是什么,并且很明显什么是异常条件。在这种情况下,不检查输入有两个缺点,并且您可以将所有检查隐藏在函数中,以便代码干净。我想说这里的 pythonic 代码是这样的

    if not valididate_parameters(params): 
           raise ValidationException(get_validation_error_msg(params))

这里你的validate_parameters函数只是做检查。该get_validation_error_msg函数负责生成可以呈现给用户的内容的繁重工作。例如,它可以检查验证函数在出现任何错误时尽早退出的所有参数。请注意,您必须将 Exception 定义ValidationException为 Exception 的子类并在更高级别捕获它。

除了一般编程的想法之外,在 Django 中,如果您的参数来自用户填写的表单,您应该验证表单代码中的每个字段。


查看完整回答
反对 回复 2024-01-15
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信