当变量为 None 时,如何停止执行我的代码?我尝试了很多东西。这是我目前的化身:
post_body = request.POST
auth_user_id = post_body.get("auth_user_id", None)
if auth_user_id is not None:
print(auth_user_id)
search_user = SearchUser.objects.get(user_id=auth_user_id)
现在这段代码死于最后一行并出现此错误:
ValueError: invalid literal for int() with base 10: 'None'
还有这个:
print(auth_user_id)
显示“无”。
那么这是怎么回事呢?如何在 None 上停止代码?
最佳答案
显然,您在这里得到的是文字字符串 'None'
, 而不是 None
object - 注意错误消息在传递时有何不同 None
你得到一个TypeError
, 当通过 'None'
你得到一个 ValueError:
# py2.7
>>> int(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string or a number, not 'NoneType'
>>> int('None')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'None'
# py3
>>> int(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
>>> int('None')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'None'
您的问题来自包含文字字符串 'None'
的 HTTP 请求正文(因为它是 POST)对于“auth_user_id”键。请注意,使用经过适当验证的 Django 表单可以避免该问题。
关于python - 在Python中,如果auth_user_id不为None,匹配None失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48658117/