Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有必要在我老板的django代码中进行所有这些检查吗?_Python_Django - Fatal编程技术网

Python 有必要在我老板的django代码中进行所有这些检查吗?

Python 有必要在我老板的django代码中进行所有这些检查吗?,python,django,Python,Django,这是我老板的密码: if hasattr(request, 'rk_user') and request.rk_user: request.rk_user.focus_update() 但我认为没有必要同时检查这两种情况 我认为应该是: if hasattr(request, 'rk_user') : request.rk_user.focus_update() 或: 我说的对吗?看起来rk\U用户是请求模型上的自定义属性?您肯定应该包括has

这是我老板的密码:

if hasattr(request, 'rk_user') and request.rk_user:
            request.rk_user.focus_update()
但我认为没有必要同时检查这两种情况

我认为应该是:

if hasattr(request, 'rk_user') :
            request.rk_user.focus_update()
或:

我说的对吗?

看起来rk\U用户是请求模型上的自定义属性?您肯定应该包括hasattr if块。另一个呢。你的老板有正确的密码

编辑
我假设它可以为null,并且您实际上希望代码能够正确处理该条件。当然,如果您100%确定此值永远不能为空,请不要勾选,但请考虑未来的开发人员。

他们会检查不同的内容。一个检查以确保访问request.rk_用户不会失败hasattr,另一个检查它是否是类似于False的类型,很可能是条件的后面部分。如果他真的想采用谨慎的编程风格,他可以:

if hasattr(request, `rk_user`) and request.rk_user \
  and hasattr(request.rk_user, 'focus_update') \
  and callable(request.rk_user.focus_update):
    request.rk_user.focus_update()
但这只是愚蠢和繁重的,这就是为什么更具python风格的方式只是尝试处理异常。它甚至有一个首字母缩略词,EAFP更容易请求原谅而不是允许,而且它是


所以,你们两个都不比另一个更正确。如果您希望请求不具有该属性,那么请继续检查它。如果在某些情况下,即使它具有该属性,有时也没有,那么它可能值得检查。但是你不会用任何类型的条件覆盖所有的基本路径或异常潜在路径,所以只检查你合理预期会发生的事情,并有逻辑处理。

尽管其他回答者正确地检查了不同的事情,但你可以将这两个检查折叠成一个命令:

if getattr(request, 'rk_user', None):

如果属性存在,则获取该属性;如果不存在,则不获取任何属性;然后它检查它得到的任何值都不是空的。

为什么不总是定义该属性并使其有效?
if getattr(request, 'rk_user', None):